O RAD, como ficou conhecido, começou a surgir junto com o Visual Basic. A idéia era permitir o desenvolvimento rápido com um mínimo de código. Tornar possível que o desenvolvedor se concentrasse nas regras de negócio da aplicação que estava desenvolvendo e não em códigos acessórios era o objetivo - mais parecendo uma utopia.

O que antes era lógica e algorítimo se tornou configuração, junção de peças e organização de componentes. A lógica e algorítimo se acomodaram sobre o funcionamento das pecinhas, funcionando como uma cola a fazer toda a junção de componentes para chegar ao resultado final, o sistema.

demorad Toda a evolução pode ser resumida em uma palavra : Abstração. Tanto da roda para o carro, como do Assembly para o Pascal, da interface de texto para a interface gráfica e do Clipper para o Visual Basic/Delphi com RAD a evolução caminhou sempre no sentido da abstração - o individuo ganha a possibilidade de se despreocupar a respeito da forma de funcionamento de elementos mais simples e passa a utilizar estes elementos mais simples para construir elementos mais complexos, tendo a certeza de que os mais simples já funcionam.

Claro que existem momentos em que o individuo precisa voltar a suas origens. Um grande exemplo disso foi a cena de "Naufrago" onde Tom Hanks precisou aprender a acender fogo com os pauzinhos. Nem ele, nem 99.9% da plateia lembravam que para acender fogo com pauzinhos era necessário um fluxo de ar. Fez falta para o Tom Hanks ? Fez alguma falta quando ele ficou perdido em uma ilha deserta depois de um desastre aéreo no meio do oceano. Mas se você não for nenhum paranóico que passou a ir ao dentista sempre antes de pegar um vôo após ver aquele filme, então a abstração de conhecimentos passados não será problema para você.

Existem momentos em que a abstração funciona perfeitamente. Responda rápido : Quantas linhas de assembly você consegue escrever ? Ainda assim consegue programar, certo ? Isso é a abstração.

Mas existem momentos em que a abstração não funciona tão bem. Alguém lembra do Kit 5 ? Foi muito famoso na época do Clipper, mas hoje praticamente não é lembrado. O que deu errado na abstração oferecida pelo Kit 5 ?

screenshootRAD A resposta pode não ser tão óbvia, mas ela está lá : Quando a abstração limita o resultado final e a aplicação  da criatividade para as necessidades de quem está usando a ferramenta, a abstração é rejeitada e as pessoas preferem utilizar a tecnologia base devido a versatilidade que esta fornece.

Portanto, no avanço tecnológico existem tentativas de abstração que funcionam e tentativas de abstração que fracassam, o Kit 5 é um exemplo de uma tentativa de abstração que não foi para a frente, outro exemplo foram os recursos específicos criados pelo Interdev (e porque não dizer FrontPage), recursos tão específicos que ficavam extremamente presos com a ferramenta.

Por outro lado o avanço tecnológico sempre continua. Na continuidade do avanço tecnológico mesmo as abstrações que eram vistas como boas podem passar a ser vistas como algo ruim. Esse fenômeno aconteceu com o Visual Basic, mais ou menos de sua versão 4 até sua versão 6.

Inicialmente excelente para aumentar a produtividade, aos poucos as tecnologias que forneciam o RAD do Visual Basic começaram a ser discriminadas como sendo técnicas pouco profissionais, funcionando como a assinatura de um sistema amador.

Mas por que isso aconteceu ?

Porque neste período entre a versão 4 e versão 6 do visual basic coincide com o período em que se começou a utilizar bancos de dados client/server. Era uma metodologia nova para a época e os desenvolvedores ficavam confusos com relação a sua utilização.

Ok, tudo bem. Mas o que tem uma coisa a ver com outra ?

POHL_Fig2 Para o R.A.D. funcionar adequadamente com o client/server eram necessárias diversas configurações específicas que muitos desenvolvedores não sabiam realizar. Com isso as aplicações feitas por meio de RAD acabavam com uma performance sofrível e inúmeros problemas.

Quando o desenvolvedor resolvia fazer a aplicação "na mão" (aqui um parentesis : "fazer na mão" se tornou um termo classico do meio da abstração tecnológica, significando burlar a abstração atual, mas podendo referir-se  a inúmeros níveis de abstração diferentes. O que hoje é abstrair amanhã será "fazer na mão") acabava como consequencia estudando em detalhes as melhores formas de fazer, ou pelo menos fazendo copy/past de outros sistemas prontos e com isso chegando a um resultado melhor do que o R.A.D.

As técnicas de RAD, porém, se tornavam pobres vítimas do desconhecimento do desenvolvedor. Elas podiam fazer muito melhor, mas eram discriminadas. A grande maioria dos desenvolvedores que dizia que os objetos RAD eram ruins diziam isso por terem ouvido falar ou por alguma experiência não muito técnica com os mesmos.

Não estou de forma alguma inocentando o RAD da época e dizendo que era uma maravilha tecnológica. Não era. Tinha os seus problemas, bugs nos componentes visuais, até muitos bugs nos componentes visuais, porém o RAD não era em definitivo a porcaria que os desenvolvedores faziam parecer, sem nem saber porque o chamavam de porcaria.

Eis então que surge o .NET. Anders Hejlsberg, que já tinha dado uma amostra de seu trabalho com o Delphi, mostrou do que sua criatividade é capaz. Ninguém lembrou de dizer para o sujeito que era impossível, então ele foi lá e fez : Mudou por completo a forma de se fazer RAD, sem porém mudar o seu resultado (os bons resultados, quero dizer)

RadAnimated2 O conceito de RAD mudou completamente. A sigla e seu objetivo final continuaram sendo os mesmos : Uma forma rápida de realizar desenvolvimento de software, desenvolvendo de forma visual. Mas o meio de chegar a esse resultado mudou. No ambiente não gerenciado, para chegar a este resultado eram utilizados componentes "fechados", que faziam tudo por si só dependendo apenas de pequenas configurações. No ambiente do .NET o RAD passou a ser feito com geração de código. Tudo, cada detalhe do que se arrasta para dentro de um formulário gera código fonte acessível para o programador.

Com o novo RAD, por que fazer tudo na mão ? Na pior das hipóteses utilizavamos o RAD e depois alterávamos o código para ficar da forma como desejávamos, ainda assim ganhando em produtividade. Quantos, porém, realmente criaram o hábito de personalizar o código gerado por um simples windows forms, por exemplo ?

Desta forma a radical mudança no significado do RAD durante surgimento do .NET gerou uma maior confiança por parte dos desenvolvedores, mas nem por isso fez com que os desenvolvedores tivessem que usar o recurso de personalizar o desenvolvimento "manualmente", especialmente porque a Microsoft teve a oportunidade de, criando uma ferramenta nova, corrigir erros de configuração e performance das antigas ferramentas - afinal, tudo começou novamente do zero.

Falamos muito de windows forms até agora, mas e o ambiente web, como se encaixa em tudo isso ?

No principio, era o substantivo. HTML, Javascript, CSS, ASP e nos tempos mais atuais até um pouco de XML. Todos esses substantivos eram necessários para o desenvolvimento de uma aplicação web. O desenvolvedor precisava dominar todos os detalhes destas tecnologias, saber como integrar essas tecnologias e entender como utiliza-las para manipular os protocolos da web e chegar ao resultado desejado.

Várias tentativas foram feitas para se chegar a um nível de abstração ideal. Primeiramente FrontPage e Interdev começaram a fazer uma abstração de forma equivalente a abstração existente no ambiente windows. Porém com toda a complexidade do ambiente web, não agradou. O desenvolvedor ainda estava tentando entender as tecnologias do desenvolvimento web e já lhe era oferecido um nível de abstração mais alto para estudar, mas preso a estas ferramentas. Pouco versátil, o desenvolvedor dispensou.

Então surgiu o DreamWeaver Ultradev. Ao invés de tentar componentes amplos, o DreamWeaver investiu na montagem de código através de wizards, deixando o código a disposição do desenvolvedor (semelhança com .NET alguns anos antes, não ?). Foi um grande sucesso entre os desenvolvedores.

10309-aspnet_logo A etapa seguinte foi o surgimento do ASP.NET. O ASP.NET foi uma grande evolução no desenvolvimento web, pois conseguiu dar um enorme salto no nível de abstração do desenvolvimento, aproximando o desenvolvimento web do desenvolvimento windows e sem sofrer rejeição do público por causa disso.

A abstração no ASP.NET divide-se em duas partes que utilizam metodologias distintas : Primeiramente o ASP.NET em si, que se apresenta ao programador como uma nova forma de programar baseada em tags e código e abstraindo muito, muito mesmo do trabalho anterior com técnicas semelhantes a do Frontpage e Interdev.

Mas se o Frontpage e o Interdev deram errado, por que o ASP.NET funcionou ?

Simples : Porque conseguiu fazer uma abstração mais versátil, mais flexivel e aberta a criatividade do desenvolvedor. Enquanto os dois anteriores se baseavam em uma coleção enorme de bibliotecas de código difíceis de organizar, o ASP.NET trazia uma escrita simples de tags que apenas se transformavam em código client em momento da compilação, longe dos olhos do programador. Todo o trabalho do programador poderia ser feito com as tags em alto nível mesmo desenvolvendo no notepad se desejasse.

Mas o ASP.NET trouxe também um 2o nível de abstração : Wizards no Visual Studio para a geração das tags ASP.NET. Wizards e recursos configuráveis de forma altamente flexivel e mantendo o padrão de deixar o código fonte visivel ao programador - só que desta vez um código fonte ASP.NET seguindo a abstração anterior.

A produtividade do desenvolvimento web com o uso do ASP.NET foi as alturas e se tornou um marco na evolução tecnológica para a web. Porém conforme a evolução dava saltos cada vez maiores (em 2005 o salto do framework 1.1 para o framework 2.0 foi muito considerável) se tornava cada vez mais complexo o aprendizado da tecnologia.

wizard2 Para aqueles que acompanharam a evolução desde o inicio, a tecnologia é um verdadeiro livro aberto. Porém, para quem entra no estudo da tecnologia nos dias de hoje, ver o que o ASP.NET 2.0 é capaz de fazer parecer pura magia e exige um grande esforço para analisar toda a arquitetura do ambiente e compreender como aquilo que inicialmente parece mágica na verdade se encaixa perfeitamente com os conceitos técnicos da web.

Iniciar o trabalho com ASP.NET nas versões atuais, porém, tem um efeito muito diferente de quem acompanhou a sua evolução desde o principio. Iniciando nas versões atuais, o desenvolvedor fica dividido entre dois ambientes : as linguagens base da web e o ASP.NET. É claro que o ASP.NET é muito mais produtivo, mas essa divisão e a dificuldade em compreender os "efeitos de magia" do ASP.NET acabam por gerar efeitos semelhantes ao que outros processos de abstração geraram no passado : Rejeição.

Por isso hoje é muito comum vermos algumas pessoas dizendo "prefiro produzir o HTML na mão", "Não gosto da geração automática de HTML", "fica muito lixo no resultado gerado pela renderização", só que na grande maioria das vezes essas pessoas não tem um profundo conhecimento do ASP.NET para poderem se justificar, se tornando um efeito muito semelhante ao que aconteceu com o R.A.D. entre as versões 4 e 6 do VB.

Não quero dizer com isso que o ASP.NET não tem problemas, que o ASP.NET não possa melhorar em muitas coisas. É claro que pode ! A tecnologia sempre pode melhorar ! Mas comparando-se os problemas que o RAD no ASP.NET (e porque não no framework como um todo ?) tem hoje com os problemas que o RAD do VB 6 possuia, passamos por um processo de evolução inigualável.

Quer um exemplo ? Veja o webcast de criação de uma camada de acesso a dados para web, onde uso o RAD ao extremo demonstrando que ele não apenas é eficiente mas também não gera perdas para a capacidade de manutenção da aplicação.

Assim sendo, quando vejo jovens advogando que preferem fazer "tudo manualmente" ao invés de usar as tecnologias para abstração que temos hoje, isso muito me decepciona. Desde a roda até o carro o caminho do avanço tecnológico sempre foi direcionado a abstração.

O ASP.NET tem problemas com design gráfico ? Eu diria que o Visual Studio até a versão 2005 teve problemas com design gráfico. Mas por que chutar o balde e querer fazer tudo na mão apenas por causa do design gráfico ? Não seria preferível corrigir os problemas existentes para mantermos o alto nível de abstração e produtividade, ao invés de chutar o balde e regridirmos em termos de produtividade ? Que tal assistir a um vídeo sobre como o Visual Studio 2008 lida com design e ver se realmente continua sendo preferível jogar fora toda a abstração obtida e regridir tanto ?

Uma outra clara distorção (campo de distorção da realidade ?) quando desenvolvedores dizem que preferem fazer tudo "na mão" ocorre com a criação de aplicações distribuidas. Eu posso dizer que fiz e ensinei a fazer aplicações distribuidas "na mão". Utilizávamos DCOM em alguns casos e transmissão de XML em outros, montando o XML com o DOM (Document Object Model de XML da Microsoft) e transmitindo com XMLHTTP. E olha que ainda dá para dizer que isso era muito luxo, pois pouco tempo antes tinha que ser concatenação de strings e abertura "manual" de conexões HTTP.

w3c Tá. E dai ? Dai que surgiu o W3C e criou : SOAP, WSDL, WS-SECURITY, WS-TRANSACTIONS, WS-ADDRESSING, isso só para citar alguns dos WS* . Imagine-se tendo que seguir todos esses padrões da forma como faziamos, montando o XML "manualmente". Viável ?

Absurdo. Confesso que eu próprio, no inicio de toda essa padronização, fiquei me perguntando o quanto seria realmente vantajoso seguir os padrões se o volume de trabalho que teríamos para isso seria simplesmente triplicado.

A padronização que o W3C criou nos ensinou uma grande lição : A padronização não tem como objetivo apenas a interoperabilidade, mas também a abstração. A partir do momento em que algo é padrão, então não precisa mais ser feito por uma pessoa, pode ser feito por uma máquina.

Foi exatamente isso que aconteceu com os padrões W3C : A partir da criação dos padrões, seu uso passou a ser automatizado. Passamos do Soap Toolkit para os webServices do .NET e agora o WCF, o conceito de criação de proxys para acesso a serviços se intensificou e tais elementos passaram a ser gerados dinamicamente. Que atire o primeiro webService com suporte a ws-security, ws-transactions e com WSDL aquele que disser que prefere fazer tudo "manualmente".

O ASP.NET pode melhorar mais ? Claro que pode, assim como toda tecnologia. Mas quanto mais os desenvolvedores investirem em sugestões e formas de melhorar a tecnologia, ao invés de chutar o balde diretamente, mais e mais a tecnologia evoluirá. Chutar o balde, querer ter o controle de tudo e fazer tudo manualmente é um retrocesso, ir contra a todo o avanço tecnológico que temos desde a roda. Aqueles que assim fazem podem até estar temporariamente corretos (o que particularmente não acredito), mas cedo ou tarde a abstração, presente na evolução desde a roda, irá atropela-los.

Neste momento temos um novo dilema no mercado de desenvolvimento web : Devemos seguir adiante com o modelo de desenvolvimento que temos ou devemos mudar o caminho para a metodologia alternativa que está sendo proposta, o ASP.NET MVC ? Para entrar mais tecnicamente neste assunto escrevi os artigo Analisando o ASP.NET MVC Framework, Criando uma Cesta de Compras com o ASP.NET MVC Framework e Analisando uma Aplicação ASP.NET MVC. Só espero que não tenha acendido o pavio de um barril de pólvora.

0

phil_SS's picture

Sinceramente, acho que RADs fazem "programadores" burros.
Esses "programadores" se tornam mão-de-obra barata para empresas...

Não estou desmerecendo o trabalho de programadores de Visual Basic ou Delphi, mas não acho que isso seja realmente programação.

cafuin's picture

Ambientes RAD não transforma ninguém em um programador ruim.

Na verdade é um ambiente onde um programador ruim se sente confortável.

Mas são úteis. Principalmente para fazer interface gráfica. Fazer isso na mão é MUITO chato.

phil_SS's picture

Verdade.

Me expressei um pouco mal. Me me referia aos que aprendem des do início a "programar" utilizando RADs.. sou totalmente contra isso.

Mas que criar interfaces gráficas na mão é chato, isso é hein!

DDLima's picture

//Pelo que eu entendi, ele não disse que transforma programadores, //mas sim forma "programadores burros", desses que não //programariam de outra forma.
oops

Daniel.

Carlos Cardoso's picture

Ambientes RAD não transforma ninguém em um programador ruim.

Na verdade é um ambiente onde um programador ruim se sente confortável.

 

Excelente.

cafuin's picture

Menos pelo erro de concordância, comentaram antes de poder corrigir Sad

Sobre o assunto em si...

Programei muito em Delphi, hoje trabalho com gente que desenvolve em Java. Então ouço muito que o "Delphi criava idiotas" ou o contrário "Java cria gênios da programação". Ahan...

Oceanos (não verificado(a))

Da mesma forma que linguagens de alto nível tornam os "programadores em assembly" burros... Da mesma forma que o assembly torna os "conhecedores de circuitos e lógica digital" burros...

Qual é a medida que deve ser usada?

Deixe os programadores visuais em paz. É a ferramenta de trabalho deles. Ser dependente de uma ferramenta é ruim para um profissional? Nem sempre (só quando ele não tem capacidade de se readaptar). Se ele trabalha com ela e ganha dinheiro com ela, qual o problema? É ele, oras. Não sei porque ficar com isso de "programadores em RAD tem pau pequeno"...

Bobeira isso de querer ficar comparando.

_______________

http://www.clubecetico.org

Dennes's picture

Oi !

Apenas completando :

Não é só a questão de não comparar, mas a questão de aceitar e ir em direção a evolução tecnológica.

Dependente de ferramenta... hoje dependemos de um fogão, prato, talheres e panelas para conseguir almoçar. Portanto nosso dia-a-dia tem uma total dependência de ferramentas.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi !

Esse conceito, de RAD fazer programador burro, é muito relativo.

No artigo chamei a atenção para o fato de que determinadas soluções de RAD funcionam e outras não. Apesar de não ter resposta para isso, com certeza o sucesso ou falha está ligado a versatilidade da solução.

Se a solucão é versátil, não exige do programador conhecimentos além da solução RAD, consequentemente não temos um processo de emburrecimento, mas sim de evolução. Quantos de nós conseguem polir uma pedra ou fazer foto com pauzinhos ? Seria isso emburrecimento ?

É como o motorista que hoje não precisa saber desmontar um motor e nem por isso é um motorista burro.

A única diferença é que o processo evolutivo na área de informática ocorre muito, muito mais rápido.

Para aqueles que não concordam, sugiro debater o desafio que coloquei a vocês no 3o parágrafo de baixo para cima.

[]'s

Dennes
---------------------
CidadaoCarioca
BufaloInfo

phil_SS's picture

Olá!

Sim, é totalmente relativo. Oque eu quis dizer é que não é nada legal ensinar uma pessoal a programar usando RADs, mesmo que seja mais fácil! Acho que a parte "chata" de algorítimos e lógica de programação não são bem aplicadas utilizando estas ferramentas(quero dizer os conceitos). Acho que todo mundo deveria aprender utilizando um editor de texto simples, um compilador(ou interpretador) e linha de comando. É chato(na verdade não =D ), mas, para mim, funciona!

Bom, era isso ai.

Dennes's picture

Oi, Phil !

Concordo em parte, no que tange ao assunto de algorítimos.

Em parte porque um professor criativo poderia inventar uma forma de ensinar este tema usando RAD.

Mas existem muitos tópicos bem além dos algorítimos, quando se ultrapassa esses assuntos básicos, não usar o RAD pode ser desperdício de tempo.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

xzerorj's picture

Pois é, foi pensando assim que a maioria da minha turma de faculdade até hoje não é capaz de criar uma solução. Sabem muito bem desenhar telas, ajustar propriedades, mas pensar na lógica do negócio é muito complicado pra eles.

Questionamentos como "onde eu preciso utilizar uma variável?", "quando devo armazenar isto numa variável global ou local?" e "pra que diabos serve uma constante?" são frequentes em qualquer trabalho que realizamos.

Aprender HTML primeiro no Micro$oft Visual NotePad XP evita ficar adimirando uma tela do IE e se perguntar porque raios a tela anda toda pra direita quando eu clico, se no meu debugger não me avisa nenhum erro acontecendo?

Tô quase careca de tanto ver isso acontecer.

Dennes's picture

Oi !

Eis ai um exemplo do fracasso de ensino com RAD e suas consequencias.

Não significa que não exista uma solução para este problema, mesmo que ainda não tenha sido encontrada.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

xzerorj's picture
Dennes disse:

Eis ai um exemplo do fracasso de ensino com RAD e suas consequencias.

Não significa que não exista uma solução para este problema, mesmo que ainda não tenha sido encontrada.

Não posso concordar 100% com você pelo seguinte: RAD's não criticam seu próprio código gerado. Eles assumem que o que foi escrito pelo RAD / Wizard é 100% a prova de falhas e por isso o código fica sem crítica e impede o aprendizado, com ou sem pedagogia e didática.
Ninguém que está ensinando vai ficar mostrando os erros da ferramenta porque senão vai ouvir do aluno: "-Se ela é tão ruim assim, porque estamos aprendendo a utilizá-la?" e com certeza vai ficar sem uma resposta sensata!

Dennes's picture

Oi !

Bem, primeiramente eu suponho o ensino de RAD com uma ferramenta boa. Nesse caso, em termos educacionais, pode significar simplesmente uma ferramente em que o professor acredite.

Depois, o ensino com RAD não seria abrir  código auto-gerado para explica-lo. Isso seria o ensino dos conceitos mais básicos, não o ensino com RAD.

O ensino de algorítimo com RAD seria usar a ferramenta da forma como seria usada comercialmente, mas criar situações de negócio que obriguem o aluno a criar algorítimos sobre o RAD da ferramenta, situações próximas da realidade.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

xzerorj's picture
Dennes disse:

Bem, primeiramente eu suponho o ensino de RAD com uma ferramenta boa. Nesse caso, em termos educacionais, pode significar simplesmente uma ferramente em que o professor acredite

Bem eu estava me referindo ao Visual Studio 2005, por quê? Ele não é uma boa ferramenta RAD para você não?

Dennes disse:

Depois, o ensino com RAD não seria abrir código auto-gerado para explica-lo. Isso seria o ensino dos conceitos mais básicos, não o ensino com RAD.

Tem razão... pra que ver o que o RAD está fazendo por baixo dos panos??!!! É bem melhor clicar em vários botões, abas e links, digitar meia dúzia de palavras e no final de tudo submeter o programa ao Suporte Microsoft para eles dizerem que o programa está correto mas não funciona porque eu tenho que aplicar um patch-sei-lá-qual-versão para funcionar corretamente.

Dennes, os RAD's e Wizard's da vida tornam um leigo em um bosta de profissional. Aqui na minha empresa por exemplo, tem um funcionário que há mais de 15 anos trabalha com windows, sempre soube criar um DNS, um DHCP, etc... Mas no dia que fui falar para ele documentar os registros dos DNS ele me olhou como se eu fosse um alienígena, porque não tinha essa opção no wizard do windows... Ferramentas são boas pra uso, não pra ensino. "Para ensino, gafanhoto-san, você deve carregar as pedras antes de poder quebrá-las"

Denes disse:

O ensino de algorítimo com RAD seria usar a ferramenta da forma como seria usada comercialmente, mas criar situações de negócio que obriguem o aluno a criar algorítimos sobre o RAD da ferramenta, situações próximas da realidade.

Novamente você está dizendo que temos que ensinar a usar um produto e não uma tecnologia. O profissional deve aprender a lógica pra poder utilizar qualquer ferramenta, e não aprender a ferramenta e ficar dependente dela eternamente...

Eu por exemplo, quando fiz o curso preparatório para o MCAD, aprendi sobre .NET na linha de comando, com compilar os programas direto na telinha preta. Depois que nós (a turma) entendemos como funciona é que passamos a aprender "A FERRAMENTA", porque a funcionalidade da "TECNOLOGIA" nós já tínhamos aprendido.

Legal você querer fazer merchan da Micro$oft aqui, mas seja coerente com a realidade... Faça posts que nos dêem informação independente, afinal isso aqui não é o MSDN certo?

MaRKauM's picture

Concordo 100%!

O que o Dennes tem que entender é que aprender apenas sobre ferramentas é suicício! Como eu já falei em outro post, temos que conhecer primeiro os métodos, depois as técnicas, só então que podemos conhecer as ferramentas!
Se não for dessa forma, criaremos profissionais medíocres e com pouco conhecimento. É necessário partir dos princípios de algorítmos, ensinar a desenvolver em alguma linguagem de nível mais baixo, nem que seja uma pseudo-linguagem igual ao Portugol.
Somente quando essas bases estiverem sólidas é que podemos seguir em frente. Se todos aprenderem apenas com uma ferramenta, imagina o dia em que a ferramenta mudar, não vão nem conseguir encontrar os registros do DNS.

Antes de fazer uma pergunta idiota, pesquise!

Dennes's picture

Prezado,

Se deseja realmente algum tipo de debate construtivo, releia os comentários. 10 vezes se necessário.

Tenho certeza que ao final conseguirá - enfim - entender o que escrevi e então sim, escrever algo construtivo a respeito.

Dennes

---------------------
CidadaoCarioca
BufaloInfo

garoa's picture

Vou reformular um pouco seu comentário para ver se vc se toca, ok?

Quote:

pra que ver o que o compilador está fazendo por baixo dos panos??!!!...
Dennes, os compiladores e editores visuais da vida tornam um leigo em um bosta de profissional.

Você soa exatamente como alguém saído da prehistória da Informática, acostumado a programar assembly em batch ao lidar com os novos e sensacionais Unix da década de 70 e seus compiladores de linguagens de alto nível (C e Pascal, quero dizer) e editores visuais como vi, ex e ed. "A perda de performance! O consumo de memória! O terror por não saber o que está sendo gerado!!"

Ah, nada como uma boa dose de perspectiva...

Fora isso, concordo que deve-se aprender a dirigir sem direção hidráulica.

garoa's picture

Honestamente, pessoal, vocês não estão sendo sensatos e me sinto na obrigação de ter que me posicionar ao lado do Dennes, não sem certa relutância porque o post é claramente de intenção marqueteira.

O fato é: IDEs RAD são apenas mais outra ferramenta para criação de aplicações comerciais. São, em minha opinião, um compilador de alto nível, que ao invés de gerar assembly, geram código na linguagem de alto nível e incluem fácil acesso ao compilador de baixo nível final. Código gerado por compiladores não são feitos para serem lidos, mas para serem usados. O que muitos estão chamando aí de lixo, eu chamo de horas ganhas.

Não concordo, como disse anteriormente, que todo esse "código-lixo" deva ser criado. Acho que o caminho para frente é sempre a criação de linguagens mais poderosas e expressivas, com maior poder de abstração e menos detalhamento para deixar o compilador feliz e, com isso, precisar de geradores de wrappers. Se tem "código-lixo" demais sendo criado em IDEs modernas para lidar com deficiências de linguagens essencialmente derivadas de C e Pascal, acho melhor correr de volta para o quadro-negro do que continuar adicionando remendos ao pano velho...

Dennes's picture

Oi, Garoa !

Quote:

não sem certa relutância porque o post é claramente de intenção marqueteira.

Mas que mania de acharem meus posts marketeiro ! Smiling

Quote:

Não concordo, como disse anteriormente, que todo esse "código-lixo" deva ser criado. Acho que o caminho para frente é sempre a criação de linguagens mais poderosas e expressivas, com maior poder de abstração e menos detalhamento para deixar o compilador feliz e, com isso, precisar de geradores de wrappers.

Mas a questão é justamente que a evolução do RAD caminha cada vez mais para esse caminho. Em minha opinião, se lidarmos com o RAD como uma evolução e procurarmos as melhores formas de utiliza-lo, chegaremos em resultados como esse mais rapidamente. Mas se negarmos o RAD, tratando-o como uma heresia, estaremos divididos no progresso tecnológico.

E observe que não estou falando de nenhuma tecnologia em especial.

[]'s

Denes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Se RAD é o uso de uma maior abstração, para ficar longe de detalhes da arquitetura que o programa vai executar ou está sendo desenvolvido. Concordo com o RAD e sinto que esse tipo de ponto de vista é futuro.

Mas se RAD for geração de código e dependente de IDE. Não acho uma boa idéia.

Opinião sobre linguagens/frameworks:

Acredito que estamos próximos de um break-even entre linguagens estáticas e dinâmicas. Porque temos que saber que tipo de número que o processador trabalha, isso pode mudar num servidor, workstation e dispositivo embarcado?

Porque não deixamos os objetos falarem se podem fazer alguma operação com outro objeto, seu valor booleano, sua capacidade de iterar sobre seus dados e outras coisas que vão muito além de getters e setters?

Ex: Se ambos são números, pelo menos um deles precisa saber se somar ao outro. Se niguém sabe, temos um exception. O mesmo acontece com divisão por zero, ela acontece dentro de método de divisão de um dos objetos envolvidos.

Concluindo, as linguagens e suas ferramentas devem se aproximar ao negócio, modelo ou necessidade do programador. E em toda a minha experiência de vida não vi muita gente se preocupando se o número deve ser float, double, short, long e se muito menos se aquele objeto seqüenciável é um vetor, lista ou árvore binária.

[]s

Dennes's picture

Oi, David !

Quote:

Se RAD é o uso de uma maior abstração, para ficar longe de detalhes da arquitetura que o programa vai executar ou está sendo desenvolvido. Concordo com o RAD e sinto que esse tipo de ponto de vista é futuro.

Mas se RAD for geração de código e dependente de IDE. Não acho uma boa idéia.

O RAD que se transformou em abstração eu costumo ver como o estágio final de evolução do RAD. Tudo começa na IDE, as vezes até em uma ferramenta a parte, até virar a abstração dentro do ambiente.

Hoje pode não ser uma boa idéia, por parâmetros atuais. Mas a partir do momento em que o RAD seja visto como um processo evolutivo, soluções para os parâmetros atuais serão dadas.

Quote:

Acredito que estamos próximos de um break-even entre linguagens estáticas e dinâmicas. Porque temos que saber que tipo de número que o processador trabalha, isso pode mudar num servidor, workstation e dispositivo embarcado?

Tenho pesquisado pouco sobre o assunto, mas até onde sei quem faz isso é a linguagem funcional, não a linguagem dinâmica.

Quote:

Ex: Se ambos são números, pelo menos um deles precisa saber se somar ao outro. Se niguém sabe, temos um exception. O mesmo acontece com divisão por zero, ela acontece dentro de método de divisão de um dos objetos envolvidos.

Isso não funciona e já foi provado.

Java mantém tipos nativos (ou primitivos ? Corrija o nome, please).

O .NET, por sua vez, apesar de gerar a aparência de OO em tudo internamente tem tratamento diferenciado - tipos tratados por valor e tipos tratados por referência.

Por que ?

Porque a perda de performance de operações OO sobre determinados tipos de dados foi considerada simplesmente inaceitável.

Quote:

Concluindo, as linguagens e suas ferramentas devem se aproximar ao negócio, modelo ou necessidade do programador.

Exatamente. Para que novas soluções sejam criadas, para que problemas existentes no RAD sejam resolvidos, dependemos de uma visão comum do RAD como um processo evolutivo. Incompleto, mas ainda sim um processo evolutivo.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Fala Dennes,

Dennes disse:

Tenho pesquisado pouco sobre o assunto, mas até onde sei quem faz isso é a linguagem funcional, não a linguagem dinâmica.

Então, o que eu quis dizer com dinâmica é a forma de declarar variáveis, parâmetro de funções e seus retornos. Funcional é um paradigma, do mesmo modo que OO também. Existem linguagens funcionais estaticamente ou dinamicamente tipada. Também existe linguagens com mais de um paradigma, como o Python que é Estruturado, Funcional e Orientado a Objetos, além de ser dinamicamente tipado.

Dennes disse:
Quote:

Ex: Se ambos são números, pelo menos um deles precisa saber se somar ao outro. Se ninguém sabe, temos um exception. O mesmo acontece com divisão por zero, ela acontece dentro de método de divisão de um dos objetos envolvidos.

Isso não funciona e já foi provado.

O que não funciona? Como foi provado? Eu descrevi algo já acontece dentro da VM do Python. No Python os objetos podem suportar diversos "protocolos", como iteração, indexação, representação em String, em Int, Float. Enfim, uma outra forma de lidar com objetos. To te devendo aquela comparação em Python e C#.

Dennes disse:

Java mantém tipos nativos (ou primitivos ? Corrija o nome, please).

O .NET, por sua vez, apesar de gerar a aparência de OO em tudo internamente tem tratamento diferenciado - tipos tratados por valor e tipos tratados por referência.

Por que ?

Porque a perda de performance de operações OO sobre determinados tipos de dados foi considerada simplesmente inaceitável.

Python tem algo parecido, tipos mutáveis e imutáveis, que revolve alguma possível confusão com referências. Não vamos viajar nisto agora.

Quanto a perda de performance, não diria que é um grande problema. E quando for, Python possui uma gama de soluções:

- Analisar o gargalo e reescrever as linhas de outra forma, de OO para Funcional por exemplo. Ou transformar seqüencias em iteradores.
- JIT compiler - Psyco
- PyPy - Esse precisa de um artigo próprio
- Analisar o gargalo com testes decentes e escrever as linhas que levam amis tempo em "C"
- Na mão, com Python.h
- Ferramentas que geram código "C" a partir de um código especial em Python
- Gerador de wrapper entre uma lib em C/C++ e Python

Enfim, dúvido que desempenho seja tão fundamental para escolha de ferramenta. Hardware custa muito mais barato que mão-de-obra. Depois posso viajar mais nisso.

[]s

Dennes's picture

Oi, David !

Quote:

O que não funciona? Como foi provado? Eu descrevi algo já acontece dentro da VM do Python. No Python os objetos podem suportar diversos "protocolos", como iteração, indexação, representação em String, em Int, Float. Enfim, uma outra forma de lidar com objetos. To te devendo aquela comparação em Python e C#.

Não conheço Python para comparar. Mas Java fugiu disso com os tipos nativos. .NET fugiu disso com o conceito de value types/reference types.

Ambos assim fizeram porque a degradação de performance seria demasiadamente alta.

Sobre Python, minha primeira pergunta então é se você tem certeza da forma como ele trata os dados internamente. Porque para o programador, .NET trata tudo como objetos, mas internamente diferencia value types de reference types.

Se o Python realmente trata tudo como objetos, como fica a performance ?

Quote:

Quanto a perda de performance, não diria que é um grande problema. E quando for, Python possui uma gama de soluções:

Não é desse nível de performance que estou falando. Estou falando de uma perda de performance (arrisquemos... ) nunca antes experimentada, pois todos os ambientes fugiram dela.
Os processadores normalmente fazer um 2+2 com os pés nas costas, mas se forem 2 objetos, o processamento necessário para fazer um simples 2+2 será muito maior.

Acho muito provável que esses tipos mutáveis e imutáveis do Python possam ter justamente relação com isso, para assim como no .NET e no Java, evitarem a perda de performance.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

DDLima's picture

O RLY?

Vai me desculpar Dennes, mas os seus posts têm sido (são?) bem fraquinhos e propagandistas demais.

Daniel.

viniciusfs's picture

Mais uma vez um texto enorme fazendo apenas propaganda.

Fabião's picture
Quote:

Mas por que chutar o balde e querer fazer tudo na mão apenas por causa do design gráfico ?

Se você disser pra mim que está desenvolvendo uma aplicação pra intranet em alguma empresa que está usando o IE e somente o IE, e usará o IE pro resto da eternidade, e tem toda parafernália Microsoft rodando no servidor, eu até diria que a insinuação de se usar esta metodologia vale. Se a empresa é tonta o suficiente pra se contentar com uma solução destas que a vai amarrar pra toda eternidade a tecnologias Microsoft, então, que seja.

Pra sites? Situações na Web aonde você não sabe que browser o cidadão vai usar? NEM A PAU. Não há a MENOR POSSIBILIDADE de se trabalhar com um código gerado COMPLETAMENTE FORA DOS PADRÕES SEMÂNTICOS do jeito que o asp.net gera. Não é esse "ah, é pouca coisa" que você quis insinuar não. É uma ENORMIDADE. Se você um dia resolver passar uma página desenvolvida usando tais técnicas por um validador, vai ter TANTOS problemas que nem vale a pena tentar.

O seu exemplo, pelo que ví no link, é montado em tabelas. Alguém (provavelmente um jovem, como você mesmo diz) um dia vai explicar pra você que este não é nem nunca foi o modo correto de se montar uma página.

A sua posição, de supor que sacrificar os padrões da W3C em prol da produtividade deve ser a desculpa que o Ballmer dava a cada reunião, quando perguntavam "Como vamos prender o povo no IE" ?

A propósito, óbviamente, sua página "bufaloinfo" não renderiza direito no firefox, e tem 355 erros no validador da w3c. É bom sempre lembrar que nem todo mundo usa soluções da Microsoft.

Isso, é claro, pra não citar a propaganda no post.

Dennes's picture

Oi, Fabião!

O post aborda não apenas a montagem de sites web, mas a construção de soluções completas que envolvem lógicas de negócio complexas e vão muito além de um simples site web.

Minha colocação no ponto que você destacou é que o ganho de produtividade é tão grande em outras áreas que não vale a pena descartar tudo apenas por causa de uma possível perda de produtividade no design gráfico. Em momento algum considerei a hipótese de jogar fora funcionalidades finais.

Quote:

Pra sites? Situações na Web aonde você não sabe que browser o cidadão vai usar? NEM A PAU. Não há a MENOR POSSIBILIDADE de se trabalhar com um código gerado COMPLETAMENTE FORA DOS PADRÕES SEMÂNTICOS do jeito que o asp.net gera.

Você está desconsiderando o fato de que o ASP.NET possui o conceito de control adapters, além de uma grande sequencia de eventos que podem ser interceptados no servidor.

Com os control adapters você pode interceptar a geração de HTML de qualquer webControl e trocar a geração do HTML pelo formato que você deseja.

Muito trabalho ? Com certeza. Mas é feito uma vez só e todo o restante do ganho compensa esse trabalho com o objetivo de cuidar do design.

A Microsoft tanto se preocupa com os padrões web que criou control adapters para diversos dos controles mais complexos do ASP.NET para que gerem código de acordo tableless de acordo com o W3C, você pode ver muitos detalhes sobre isso em http://www.asp.net/CssAdapters/

Quote:

A sua posição, de supor que sacrificar os padrões da W3C em prol da produtividade

Essa nunca foi minha posição e isso é apenas uma interpretação errada do que escrevi.

Além de tudo isso leve em consideração que os efeitos dos css control adapters que linkei acima estão sendo incorporados ao framework e que o visual studio 2008 melhorou consideravelmente sua relação com o design gráfico.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture

Quote:
O post aborda não apenas a montagem de sites web, mas a construção de soluções completas que envolvem lógicas de negócio complexas e vão muito além de um simples site web.

Exemplo? Porque eu considero um "simples site web", tanto o meu site, quanto um "msdn.microsoft.com", por exemplo. Ambos estão disponibilizados via browser, e são de acesso público. Como eu disse posteriormente, esta lógica não se aplica a desenvolvimento das tais "lógicas de negócio complexas" cujos detalhes desconheço.

Quote:
Minha colocação no ponto que você destacou é que o ganho de produtividade é tão grande em outras áreas que não vale a pena descartar tudo apenas por causa de uma possível perda de produtividade no design gráfico.

Não se trata de "possível perda no design gráfico". É bem mais do que isso. Perde-se semântica para posterior indexação do conteúdo por sites de busca, por exemplo. Perdem os padrões web. Perdem a compatibilidade segura entre os browsers (o fato de uma página não seguir os padrões pode causar tal efeito). Antes fosse uma "pequena perda no design gráfico". Isso é o de menos, acerta-se.

Quote:
Muito trabalho ? Com certeza. Mas é feito uma vez só e todo o restante do ganho compensa esse trabalho com o objetivo de cuidar do design.

Exemplo? O próprio tratamento de conteúdo de exemplo dos CssAdapters:

E o que deveria ser o resultado se fosse semântico:

Aí, neste caso, o que faço? Programo usando as ferramentas de RAD, introduzo o adapter e trabalho usando o adapter pra ele limpar as monstruosidades que o asp.net faz por default, e ainda trocando as bizarrices que o adapter cria? Dois trabalhos?

Pode ser o projeto que for, simplezinho ou extremamente complexo, esta abordagem não me parece vantajosa. E isso porque eu nem fui encucar com a metodologia de trabalho do negócio: No caso do exemplo do menu, há javascript demais aonde poderia ser feito de outros modos, bem divulgados na web aliás, que evitariam uns 5kb de informação pro usuário baixar. É pouco? É. Agora junta tudo num site de grande porte e veja a banda jogada fora, em prol de um desenvolvimento mais rápido. O asp.net acha que javascript é a melhor coisa do mundo, e sai criando menus, eventos, hovers, tudo usando js. Cai em um browser que não usa JS pra você ver: O cara não navega. E são coisas que poderiam ser solucionadas de outro modo.

Você até poderá dizer algo do tipo "isso só faz diferença em 'lógicas de negócio complexas', soluções e sitezinhos não fazem mesmo diferença. Mas, não falo sem nenhum conhecimento de causa: Já trabalhei em projetos bem complexos usando webServices, zilhões de requisições ajax em tempo real, e sei bem o que certos atalhos que frameworks e RADS oferecem provocam quando o bicho pega.

E, principalmente, fato que é bom deixar claro: O design nem é a minha principal preocupação, o buraco é bem mais embaixo.

Quote:
A Microsoft tanto se preocupa com os padrões web

Hoje? Sim, se preocupa. Mas, não era assim fazem alguns (poucos) anos atrás não. Aliás, estamos em 2008, e, como você bem disse, os CCA SERÃO incorporados ao framework como default (espero).

Wallacy's picture

Por falar em javascript.

O site da narutoproject é um bom exemplo: É um bom site, porém tem tanto ajax que atrapalha! Demora um tempão para carregar e eu não posso clicar em nenhum link antes de terminar de carregar se não ele diz que o protocolo ajax não está associado a ninguém, etc.

Fora que não consigo acessa-lo via DS.

Dennes's picture

Oi, Wallacy !

Isso é outro problema. Ajax virou um modismo tão grande que hoje estão fazendo verdadeiros absurdos só porque é com Ajax.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi, Fabião !

Quote:

Exemplo?

Neste exato momento estou fazendo uma análise de uma solução que será bem ampla, regras de negócio bem amplas, utilizará webServices, enfim, existe muito a ser desenvolvido e organizado para garantir a manutenção da aplicação e design gráfico é apenas a menor parte disso.

Quote:

Não se trata de "possível perda no design gráfico".

Quando eu falei de perda no design gráfico, estou falando de perda apenas de produtividade. Pois estou afirmando que, mesmo tendo mais trabalho, você não perde absolutamente nada, se não desejar perder.

Quote:

Perde-se semântica para posterior indexação do conteúdo por sites de busca, por exemplo

Implementei em um projeto que estou fazendo uma solução para inverter todo o código client gerado pelo ASP.NET e ASP.NET Ajax que normalmente fica logo após a tag form, para o final da tag form, exatamente para garantir uma melhor capacidade de indexação do site.

Os CSS Control Adapters, que já linkei antes, fazem os principais objetos serem renderizados como tableless, gerando mais facilidade de indexação.

Objetos personalizados da Infragistics são capazes de identificar quando a página está sendo chamada por um spider e se renderiza de forma diferente para ser totalmente fácil e legível para o spider.

A única perda existente é de produtividade no design gráfico para se chegar a estes resultados, mas o ganho de produtividade no restante da aplicação compensa.

Quote:

Exemplo? O próprio tratamento de conteúdo de exemplo dos CssAdapters:

Você pegou como exemplo o objeto de login, webControl login.

A síntaxe de fieldset é gerada pelo objeto panel no ASP.NET.

Então você tem as seguintes opções :

Cria um template no login (ele tem essa capacidade) e monta o layout com um panel. Usa um arquivo .skin para que a montagem passe a ser válida para todo o site e que você possa inclusive copia-la para outros sites

ou

Altera o control adapter para gerar o panel na renderização do login

ou

Cria uma classe herdada de login e altera o HTML de saida.

Como vê, em nada ficamos impedidos de chegar ao resultado final que você deseja, terá apenas menos produtividade em design, só isso.

Quote:

No caso do exemplo do menu, há javascript demais aonde poderia ser feito de outros modos, bem divulgados na web aliás, que evitariam uns 5kb de informação pro usuário baixar.

Existem inúmeros componentes de menu para ASP.NET, você pode até mesmo criar o seu.

Mas você sabia que o menu é ligado a tecnologia de mapa de site do ASP.NET que por sua vez também é interligada a autorização, escondendo automaticamente itens do menu que o usuário não tem permissão de ver ?

Quote:

Cai em um browser que não usa JS pra você ver: O cara não navega.

Um browser que não usa JS consegue navegar em algo hoje em dia?

Quote:

e sei bem o que certos atalhos que frameworks e RADS oferecem provocam quando o bicho pega.

Se você já trabalhou com isso, então ninguém mais ideal para aceitar meu desafio contido no 3o parágrafo de baixo para cima no artigo, que tal ?

Resumindo o que disse : O que você vê gerado por default pelo ASP.NET é apenas um default, o ASP.NET tem uma estrutura que permite que você personalize tudo e continue trabalhando com sua estrutura.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Como eu falei no outro post... o padrão do meiobit está caindo.
Esse cara(er.. MVP né?) só quer saber de fazer propaganda.

Lamentável.

rod.stuchi's picture

Cara não é bem assim, e pelo contrário o padrão de qualidade do Meiobit só está aumentando!
Tá certo que tem um pouco de "propaganda" Microsoft, mas o que o artigo está enfocando a meu ver, é o papel que Microsoft teve nas ferramentas RADs, é nisso o Dennes está de parabéns.. muito bom o artigo. Só tem muitos *tards da vida que vivem pra meter o pau nas ferramentas da Microsoft.
Mas o Mb está aberto a novos artigos, se vc quiser escrever um de PHP, creio eu que será apreciado...

Fabião's picture

Tá certo que tem um pouco de "propaganda" Microsoft, mas o que o artigo está enfocando a meu ver, é o papel que Microsoft teve nas ferramentas RADs

Não foi isso que eu entendí não.

rod.stuchi's picture

Entenda por Microsoft (Anders Hejlsberg) o homem por trás do Delphi e do .Net, e sim ele teve papel fundamental nessas ferramentas RADs, como o Dennes disse.

Fabião's picture

Isso é um fato.

O fato é que o texto tem esta informação, mas não trata disto.

Não é um post que trate de "a história e o pioneirismo da microsoft nas camadas de abstração". O post é uma propaganda escancarada do asp.net.

rod.stuchi's picture

Concordo contigo sobre a propaganda do asp.net, mas dai falar o que o nosso amigo falou:

guto pesset disse:

Como eu falei no outro post... o padrão do meiobit está caindo.

ai já é demais!
Mesmo sendo ou não propaganda, acima de tudo o artigo traz informações técnicas que são no mínimo interessantes.

Donnie Darko's picture

Na página principal o texto não mostra a que veio. Li e pensei, "Opa, um texto sobre RAD". Depois cliquei em "leia mais" e vi o que realment é...

Dennes's picture

Oi !

Quote:

O post é uma propaganda escancarada do asp.net.

O que separa o debate técnico da propaganda ?

Você pode demonstrar um ambiente de desenvolvimento para a web que seja mais RAD do que o ASP.NET ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture

Omni Studio, se a pessoa não se incomodar de usar ActiveX. Serve para soluções "de alta complexidade".

Tem o Code Charge também. E devem haver dezenas de outros no mundo.

Quote:

O que separa o debate técnico da propaganda ?

Tudo. Quando eu escreví artigos aqui, lembro de um sobre RIA Frameworks pra web. Eu fiz questão de citar todos que conhecia, por exemplo. Nunca passou pela minha cabeça tratar o que eu estava usando (Backbase) como se fosse a oitava maravilha do mundo, e encher de links pro meu site com exemplos de código que eu tinha feito no mesmo (e pode crer, eu tinha um monte).

Dennes's picture

Oi, Fabião !

Quote:

Omni Studio, se a pessoa não se incomodar de usar ActiveX. Serve para soluções "de alta complexidade".

Como você disse, se você não se importar com ActiveX. Nesse caso teria Flash e Silverlight, mas ai já estaria saindo completamente do assunto, não ?

Quote:

Tem o Code Charge também. E devem haver dezenas de outros no mundo.

Então porque não complementa as informações sobre RAD que apenas comecei e escreve um artigo complementa sobre o assunto ?

Quote:

Nunca passou pela minha cabeça tratar o que eu estava usando (Backbase) como se fosse a oitava maravilha do mundo

Cada um escreve aquilo em que acredita. Se eu estivesse sendo parcial, teria defendido o interdev no artigo.

Quote:

e encher de links pro meu site com exemplos de código que eu tinha feito no mesmo

Todos os links do artigo estão devidamente relacionados com o tópico. Se você gosta de negar aos seus leitores informações complementares (o que é isso ? Estamos vendo negação de links para informações no MeioBit ?) isso é uma opção sua, eu não faço isso.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

OMGWTFBBQ's picture

Tristemente percebo que o grande Fabião/Sassá Mutema está trilhando o caminho negro que os *tards percorrem quando começam a se radicalizar.

Não faça isso, meu chapa! "Keep an open mind", please!

Fabião's picture

Cara, não tem como não radicalizar quando o assunto são padrões web.

Eles NECESSITAM ser implementados, a qualquer custo: São eles quem possibilitam que você use qualquer browser que não seja o IE e veja algo correto na sua tela.

São eles que possibilitarão que a indexação de conteúdo na internet melhore: Você vai achar suas informações de modo mais fácil.

As únicas desvantagens nesta padronização são que o uso de RAD e WYSIWIG é inviável.

Agora, o que você prefere, em um site de grande porte (ou até de pequeno porte, por exemplo): Que a sua experiência desenvolvendo seja rápida, ou que a experiência dos milhões de usuários que o frequentarão seja rápida depois?

Pra gerar HTML válido, semântico e dentro dos padrões, você vai a loucura usando asp.net. É óbvio que, neste caso, mais cedo ou mais tarde vão pipocar sites que não dão a mínima pros padrões web e vão manter tudo como está hoje. E isso é péssimo pro desenvolvedor web, é péssimo pro usuário, péssimo pra todo mundo.

Não tem como não ser W3Ctard quando tratamos disso.

Quer usar o VS2008 pra gerar HTML? Ótimo, não tem problema. Vai ter que usar a camada de ajuste depois, exibindo o HTML semântico correto. E pra mim isso daria mais trabalho que programar na mão.

Dennes's picture

Oi, Fabião !

Quote:

Quer usar o VS2008 pra gerar HTML? Ótimo, não tem problema. Vai ter que usar a camada de ajuste depois, exibindo o HTML semântico correto. E pra mim isso daria mais trabalho que programar na mão.

Sim, provavelmente da mais trabalh do que programar na mão sim, na primeira vez que você faz.

Mas a questão é que para todo o resto que está além do design gráfico você tem ganho de produtividade e um lado compensa o outro com vantagens.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi !

Se eu pudesse falar de RAD sem falar do papel da Microsoft nele, com certeza falaria, pois sabia que iam levantar o dedo para dizer que é propaganda.

Mas a conclusão que espero colocar em debate é o fato de que o RAD não é um emburrecimento, mas uma evolução e outros fabricantes deveriam se dedicar mais a ele.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Wallacy's picture

RAD é um dos caminhos de uma longa estrada. Smiling

Tem coisas que o "RAD", seguindo a ótica das ferramentas, pode não ser o ideal, de qualquer forma para algumas aplicações não existe "método" melhor.

Odeio desenhar interfaces em QT na mão, eu uso o Design o máximo possível, porém em grande parte dos aplicativos tenho que fazer uma ou outra coisa na mão, até para melhorar a legibilidade do código gerado, que nem sempre é adequado.

Fabião's picture

Concorda que quando você desenvolve uma aplicação em QT, você sabe o ambiente em que ela vai rodar e a sua reação? E que, acima de tudo, não há um esforço de regulamentação que tenta manter o código com um certo padrão para que se saiba exatamente como ele irá se comportar?

Uma aplicação web pode rodar no Firefox, no IE, no Opera, No Safari. Pode ser no Linux, no Mac, no Windows, num iPod Touch. O excesso de código gerado pela ferramenta que produz a interface não afeta pra quem vai usar sua aplicação em QT no desktop, mas pode causar um overload num servidor em um site de alta visitação: É dado inútil trafegando. É código não semântico que o Google e o Yahoo tem que se virar pra indexar, porque nem sempre o código gerado respeita tais regras. Você não sabe nem se o usuário vai ter a fonte que você escolheu no sistema.

Aí, a W3C vai lá e propõe os padrões. Ó, desenvolve-se assim. Usa se tabelas só pra dados tabulares. Id's e Classes com nomes legíveis, não "Style1". Semântica, preocupação com a indexação do conteúdo. E alguém cria um artigo insinuando que a iniciativa (cuja Microsoft endossa) talvez esteja significando um retrocesso, porque perde-se produtividade implementando-as?

RAD é excelente pra Visual Basic. Desenvolvimento de aplicações pra desktop. Não pra web, a menos que melhorem MUITO o que temos hoje. Serve bem pra intranet. Note que me refiro a parte gráfica, somente. A apresentação. Pra databases e consultas tá liberado.

Wallacy's picture

Concordo.

Ainda citando QT, que é multiplataforma. Existem varias preocupações sobre a renderização do texto, idiomas e capacidade de tradução, tema, etc.. varias coisas sobre a QT que quando se cria um codigo para varias plataformas precisa de "braço" para ficar bom em varias plataformas.

Em java com swing já tive vários problemas no construtor que gerava botoes em diferentes locais, também.

E principalmente a parte do "código de verdade" que tem que ser feito para rodar nas diferentes plataformas, seria bem mais fácil criar uma aplicação só para Windows em QT ou só para Linux em QT.

Ainda no Desktop também existe vários desses problemas que você citou. E com certeza para Web o buraco é bem mais em baixo, talves até por isso alguns apostam tanto no Flex, esquecendo é claro dos diversos problemas do player para Linux.

Em fim, é realmente complicado achar um cenário perfeito. Qualquer técnica de automação é maravilhosa quando é possível determinar toda a amplitude do cenário. E nem sempre isso é possível.

Citando novamente a Web, hoje boa parte das ferramentas de RAD focam nesse quesito, ainda geram muito "lixo", porém acredito que algumas(como o DreamWeaver) ajudam muito principalmente nesse problema, gerando códigos que são capazes de rodar em diferentes navegadores e suas diferentes versões, não talves muito eficiente com relação aos problemas que afetam a plataforma, mais ainda assim acredito que seja um grande passo.

Porém é claro, concordo plenamente quanto a parte do "lixo" gerado, que em aplicações mais "criticas" aumentam e muito a curva assintótica da aplicação. Esse problema como você comentou é bem menos prejudicial em desktop, porém (lembrando do caso do twitter) pode ser fatal na web.

Dennes's picture

Oi, Wallacy !

O problema é que muita gente fala desse lixo sem pesquisar sobre ele e sem nem saber do que se trata.

O ASP.NET tem amplos recursos para personalização do código HTML gerado, o que já indiquei aqui com diversos links, então será que não valeria a pena analisar tais recursos e fazer a geração do HTML da forma que desejar ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Wallacy's picture

Só se for mais eficiente que já fazer o código "certo"!

E isso varia em cada cenário.

Dennes's picture

Oi, Wallacy !

Não entendi nada do comentário...

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Wallacy's picture

Você disse: "então será que não valeria a pena analisar tais recursos e fazer a geração do HTML da forma que desejar ? "

E eu disse: Só se for mais eficiente que já fazer o código "certo"!

E quando eu digo fazer o código certo, pode ser entendido como "fazer na mão", porém também pode ser interpretado com um baixo uso de ferramentas de automação, etc.

Resumindo mais, vale a pena? Talvez, porém pode ser que não. Acredito que em "sites pequenos" nem exista ganho de "velocidade" de produção ao fazer esse tipo de personalização nos "tais recursos" do ASP.NET para ele gerar o HTML como "eu quiser", pode ser mais pratico fazer logo na mão em alguns casos.

Dennes's picture

Oi, Fabião !

Quote:

Uma aplicação web pode rodar no Firefox, no IE, no Opera, No Safari. Pode ser no Linux, no Mac, no Windows, num iPod Touch.

Por isso que demorou tanto para existir um RAD para ambiente web e, em minha opinião, ainda não existe.

Quanto a geração de código em excesso, etc, e tal, já indiquei vários links em uma resposta anterior para você.

Quote:

E alguém cria um artigo insinuando que a iniciativa (cuja Microsoft endossa) talvez esteja significando um retrocesso, porque perde-se produtividade implementando-as?

Neste parágrafo existem vários "porém"s. Você não está falando deste artigo, está ? Acho que você pode estar falando sobre os artigos a respeito do ASP.NET MVC e não sobre este aqu. Como não estão publicados aqui e sim no BufaloInfo, o ideal seria debater esse tópico na lista de discussão do devaspnet.

Além disso a afirmação "cuja Microsoft endossa", caso você esteja se referindo ao MVC, está errada, porque não existe endosso ou falta de endosso. A Microsoft criou um ambiente alternativo aos webforms e smplesmente nos indica para escolher aquele que preferirmos.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture
Quote:

Por isso que demorou tanto para existir um RAD para ambiente web e, em minha opinião, ainda não existe.

E que diabos estamos discutindo aqui, então? A tentativa do asp.net gerando HTML e CSS é o que, na sua concepção?

Quote:

Quanto a geração de código em excesso, etc, e tal, já indiquei vários links em uma resposta anterior para você.

Gerar código ruim, pra depois ter de tratá-lo, pra mim é e sempre será menos eficaz que fazer certo direto.

Quote:

Neste parágrafo existem vários "porém"s. Você não está falando deste artigo, está ? Acho que você pode estar falando sobre os artigos a respeito do ASP.NET MVC e não sobre este aqu.

Devo ter confundido lendo os links (Sim, eu lí todos, e alguns mais). Mesmo assim, perdôe-me, mas acredito que seu pensamento inclusive para este post é o mesmo.

Quote:

Além disso a afirmação "cuja Microsoft endossa"

Endossa os padrões web.

Quote:

A Microsoft criou um ambiente alternativo aos webforms e smplesmente nos indica para escolher aquele que preferirmos.

De acordo, é uma escolha de cada um. Estou deixando claro que acho a opção da microsoft errônea.

Dennes's picture

Oi, Fabião !

Quote:

E que diabos estamos discutindo aqui, então? A tentativa do asp.net gerando HTML e CSS é o que, na sua concepção?

ASP.NET não gera CSS e isso é um ponto importante.

Além disso, por mais RAD que o ASP.NET seja, ele não faz o serviço completo. Sozinho não pode gerar uma aplicação web completa. O ponto fraco está justamente no design gráfico, que para ficar perfeito com ASP.NET exige um grande volume de trabalho.

Quote:

Gerar código ruim, pra depois ter de tratá-lo, pra mim é e sempre será menos eficaz que fazer certo direto.

Você não observou que trabalhando com herança e criação de webControls você estará gerando o código que desejar.

Além disso, gerar o tratamento com os objetos existentes hoje é mais produtivo do que ter que a cada trabalho fazer toda a geração de HTML de forma manual.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture
Quote:

Além disso, por mais RAD que o ASP.NET seja, ele não faz o serviço completo. Sozinho não pode gerar uma aplicação web completa. O ponto fraco está justamente no design gráfico, que para ficar perfeito com ASP.NET exige um grande volume de trabalho.

Acho que agora eu captei seu ponto: Muito provavelmente você apenas desenvolve o código, deixando o design pra outra pessoa, correto?

Eu trabalho com as duas coisas simultâneamente.

Fazendo JUNTOS o design (quando falamos 'design', leia-se código de marcação semântico E visual) e o código por trás do mesmo usar RAD realmente não parece tão atraente.

Quote:

Você não observou que trabalhando com herança e criação de webControls você estará gerando o código que desejar.

Exato. Dois trabalhos. E nem sempre, como bem disse o Wallacy, esta combinação é menos demorada do que fazer na mão. E note que quando digo "na mão", as vezes compreende auxílios de ferramentas para aumentar a produtividade, que "per se" não gerem HTML.

Quote:

Além disso, gerar o tratamento com os objetos existentes hoje é mais produtivo do que ter que a cada trabalho fazer toda a geração de HTML de forma manual.

É o que você diz, é o que a Microsoft endossa, e é o que eu e bastante gente discorda.

Dennes's picture

Oi, Fabião !

Quote:

Fazendo JUNTOS o design (quando falamos 'design', leia-se código de marcação semântico E visual) e o código por trás do mesmo usar RAD realmente não parece tão atraente.

Com certeza. Você fica dividido entre elogiar o RAD que ajuda você na construção do código ou xingar a parte de design gráfico.

Quote:

Exato. Dois trabalhos. E nem sempre, como bem disse o Wallacy, esta combinação é menos demorada do que fazer na mão

Exato. Só que todo o trabalho que você tiver para um projeto será reaproveitado para o projeto seguinte, o que não acontece se você desenvolver todo o HTML "manualmente".

Quote:

É o que você diz, é o que a Microsoft endossa, e é o que eu e bastante gente discorda.

Explique melhor. Criar objetos que gerem o HTML adequado uma única vez e utiliza-los em dezenas de projetos não é mais produtivo do que criar o HTML de forma "manual" dezenas de vezes ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture
Quote:

Explique melhor. Criar objetos que gerem o HTML adequado uma única vez e utiliza-los em dezenas de projetos não é mais produtivo do que criar o HTML de forma "manual" dezenas de vezes ?

Você parte do princípio que tudo é reaproveitável, e nem sempre as coisas são assim.

E também se esquece que eu posso copiar e colar o HTML feito a mão no projeto anterior, ou usar code snippers no dreamweaver, ou criar uma biblioteca de funções que geram o código semântico que eu fiz nas soluções implementadas anteriormente, coisa que eu vivo fazendo.

Não é só usando RAD que eu tenho condições de reaproveitar código.

Dennes's picture

Fabião,

Quote:

Você parte do princípio que tudo é reaproveitável, e nem sempre as coisas são assim.

Quando se lida com OO, só não é assim se você fizer errado.

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture

Se fosse assim, ninguém precisaria programar mais no mundo.

Dennes's picture

Estude um pouco mais sobre OO e entenderá melhor o assunto

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Fabião's picture

Beleza, Dennes.

Me sugere algum livro ?

MaRKauM's picture

Eu acho que quem precisa estudar mais sobre OO é você!
Partindo do seu princípio de que tudo é reaproveitável, porque ainda precisamos criar códigos? Basta aproveitar os objetos utilizados antes! Não temos mais programadores, agora somos meros integradores de objetos já existentes.

Na teoria OO é perfeito! Na prática as coisas não são bem assim.

Antes de fazer uma pergunta idiota, pesquise!

Fabião's picture

Quase que eu aceitei o convite pra sua palestra, mas aí que eu ví que ela foi em Janeiro.

Logo, fiquei me perguntando qual o motivo do link.

Dennes's picture

Faça download

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi !

Quote:

Tem coisas que o "RAD", seguindo a ótica das ferramentas, pode não ser o ideal, de qualquer forma para algumas aplicações não existe "método" melhor.

Isso está ligado ao ponto do artigo em que comento que algumas formas de RAD funcionam, outras não. Então as aplicações para as quais o RAD não é adequado hoje indicam apenas que ainda não encontramos a forma certa de RAD.

Quando tinhamos interdev e posteriormente dreamweaver ultradev, acreditei que o RAD voltado ao encapsulamento na web (interdev) nunca funcionaria, enquanto que o RAD voltado a construção (ultradev) seria o ideal. O surgimento do ASP.NET mostrou que eu estava completamente equivocado e que a evolução do RAD e da tecnologia pode nos trazer muitas coisas que hoje pensamos serem impossíveis ou inadequadas.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

magno's picture

Parabéns pelo post Dennes. Concordo com você que o RAD e uma boa plataforma (como o Visual Studio e o Delphi) ajudam em muito no desenvolvimento.

Aprendi a programar em um compilador DOS e é um problema escrever dezenas de linhas sem saber se vai funcionar ou não, levar 40 minutos compilando por conta de alguma pequena, porém importante, mudança e no fim descobrir que você escreveu o nome de uma função errada.

Passei para o Delphi e conheci um mundo novo, vindo mais tarde a conhecer o Visual Studio e o .NET. Tem vezes que eu acho que só esses dois evoluem no sentido de ajudar o programador a ser mais eficiente. Conheci muito programador que ainda usa um "notepad bombado" ou implementações baseadas em RADs de 10 anos atrás.

Na UFRJ já vi gente usando DosBox para ensinar usando Turbo Pascal e KWriter para ensinar C. Estamos criando engenheiros que terão medo de fazer um script de 4 linhas.

cafuin's picture

"Na UFRJ já vi gente usando DosBox para ensinar usando Turbo Pascal e KWriter para ensinar C. Estamos criando engenheiros que terão medo de fazer um script de 4 linhas."

Pois eu tenho medo que estejamos criando somente operadores de RAD.

Engenheiros com medo de ponteiros. Que só sabem desenvolver para uma VM, ao ouvir falar de código nativo, molham as calças.

Legal que se desenvolva usando RAD para aumentar a produtividade. Mas essas quase campanhas de "baixo nível é para dinossauro"... lamentável.

É necessário aprender COMO as coisas funcionam de verdade. Depois, se quiser, usa todas camadas de abstração que quiser.

Tenho um colega de trabalho, engenheiro, que encontrou um bug no compilador e corrigiu no braço, em assembly, fazendo funcionar até corrigirem o compilador. É uma aplicação embedded.

A inversão de valores é tanta que querem convencer que gente assim é um "dinossauro", o clicador-arrastador é o bonzão.

magno's picture

"Pois eu tenho medo que estejamos criando somente operadores de RAD. Engenheiros com medo de ponteiros."

Conheço muitos engenheiros que têm medo de ter de trabalhar com arquivos de texto no programa (sim, reset, WriteLn, readln e closefile). E você ainda quer que aprendam ponteiros?

Programadores sim tem que saber lidar com ponteiros, garbage collector, problemas de little endian e big endian, etc. Engenheiros recém-formados têm que saber usar SDKs, APIs, algoritmos matemáticos e fazer especificações. E não a fazer gambiarras em DOS para aprender for, if, while, case e until e esquecer seis meses depois.

Note que eu estou falando "Engenheiro" e não "Engenheiro de Computação".

cafuin's picture

Então seus engenheiros estão só ganhando um troco com programação.

Os que me refiro NÃO são de computação. São engenheiros eletricistas (isso é o certo? São formados em Eng. Elétrica). Criam software para controle em equipamentos, eu falei, é software embarcado.

Precisam saber MUITO de C .

magno's picture

Programação é uma ferramenta valiosa para qualquer Engenheiro. Mas é possível alguém ser um Engenheiro completo e produtivo sem saber uma vírgula de programação.

Ele não está ganhando troco com programação, ele simplesmente não usa.

Dennes's picture

Oi, Cafuin !

Quote:

Pois eu tenho medo que estejamos criando somente operadores de RAD

O problema da educação é algo totalente adicional a isso.

Um desenvolvedor .NET pode ser um excelente desenvolvedor e nunca na vida desenvolver um driver de dispositivo em C.

Da mesma forma, o contrário, um desenvolvedor de drivers e API's para dispositivos pode nunca se interessar em desenvolver uma aplicação comercial com .NET

Estamos falando de profissões diferentes que precisam começar a serem tratadas como tal dizer que desenvolver aplicações comerciais sem nunca desenvolver em baixo nível é um emburrecimento, é desrespeitar um ramo profissional.

Um exemplo cinéfilo : No filme Jurassic Park, examine a relação entre os 3 especialistas convidados para o parque e os cientistas que criaram o parque.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

cafuin's picture

"Estamos falando de profissões diferentes que precisam começar a serem tratadas como tal dizer que desenvolver aplicações comerciais sem nunca desenvolver em baixo nível é um emburrecimento, é desrespeitar um ramo profissional. "

Profissões diferentes? Identifique-as, então. Que eu me lembre, o curso de formação são os mesmos na base, depois cada um trilha o seu caminho. Eu falei que as pessoas devem saber como as coisas funcionam, e mantenho isso.

Dennes's picture

Oi, Cafuin !

Quote:

Profissões diferentes? Identifique-as, então.

Estou olhando para além do que existe hoje, estou olhando para uma necessidade.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

ironman_br's picture

Que necessidade criar um curso de formação para operadores de RAD?

Cara isso já existe, com cursinhos por ai.

Um profissional deve ter uma formação boa, aprender bem os conceitos e conhecer as camadas baixas, ir subindo na abstração e depois decide em que vai se especializar.

Jabá http://beernotfoundexception.blogspot.com/

puppy's picture

Concordo com Cafuin. Conhecer como funciona não deveria ser considerado "dinossauro", e nem quem programa com o notepad bombado. Aplicações embarcadas normalmente necessitam de otimizações absurdas no código, e simplesmente arrastar e colar não soluciona isso.
________
http://nodoadouniverso.wordpress.com
http://cybergalo.wordpress.com

Dennes's picture

Oi, Puppy!

Sim, mas o inverso, discriminar quem trabalh com RAD, também não pode acontecer.

Um desenvolvedor pode desenvolver aplicações comerciais por toda sua vida sem precisar se envover com aplicações embarcadas.

Estamos falando de áreas diferentes de desenvolvimento, será que não estamos chegando perto de um momento em que precisem ser bem separadas, sem que uma discrimine a outra ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Oceanos (não verificado(a))

Na verdade, se você parar pra pensar as coisas seguem a ordem natural das coisas. Com o tempo as coisas tendem à evoluir e se modernizar.

Ensinar Turbo Pascal é lastimável mesmo. Não serve para nada, absolutamente nada além de ensinar a lógica de programação e uma linguagem. É possível ensinar lógica de programação e ainda assim utilizar uma ferramenta mais moderna que eventualmente seria útil para alguém.

Quanto ao KWriter, tenho minhas dúvidas quanto à sua crítica: eles não estão lá para ensinar ferramentas, e sim conceitos. KWriter é o editor de textos que estava a mão.

Querendo ou não, RAD é ferramenta para usuário industrial. É modismo para usuário que vai trabalhar para fazer aplicação de video-locadora para indústria (e afins).

Uma faculdade, ao contrário dos que muitos pensam, não costuma ser encarada como curso profissionalizante (e se me permitem dizer, nem deve... para isso, afinal, temos os... cursos profissionalizantes). Faculdades ensinam conceitos, devem preparar você para aprender; é isso mesmo: elas te ensinam a aprender; elas te colocam dentro dos conceitos básicos da sua área. Espera-se com isso que você seja capaz de sair de uma faculdade e, aí sim, aprender a utilizar a ferramenta que você vai trabalhar.

Voltando ao RAD, talvez não esteja claro, mas ela não é ensinada porque não é padrão dentro da computação e é apenas uma ferramenta para um usuário. Sem contar que escolha de RAD é uma escolha comercial e, ensinar uma, não significa ensinar todas (ao contrário de linguagens de programação, o cara que aprende C aprende pascal ou python com bastante facilidade). Da mesma forma que disciplinas de sistemas operacionais tendem a não ensinar Unix, Windows ou Linux (okay, a ênfase normalmente é Unix/Minix por causa do mala prolixo do Tanembaum), elas ensinam CONCEITOS: o que é um escalonador? Quais os tipos? Quais sistemas implementam quais? Como funciona um sistema de arquivos? Quais conceitos existem por trás de um? E assim vai.

Para que prender o formando à uma ferramenta e deixa-lo quiçá um programador medíocre se se pode ensinar os conceitos e deixar ele decidir por sí só se quer ser "medíocre" ou não?

_______________

http://www.clubecetico.org

Dennes's picture

Oi, Oceanos !

Sem necessariamente discordar de nada, mas apenas acrescentando mais variáveis na equação : Será que o profissional que sai da faculdade, da forma como citou, realmente está preparado para o mercado ?

Será que temos cursos profissionalizantes que realmente preencham o buraco restante ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Oceanos (não verificado(a))

Oi Dennes.

Eu dou meu pitaco: acho que sim. A maioria, pelo menos. Mas não acho que tudo que se aprendeu na faculdade seja utilizado na indústria. O problema é que a computação é uma área muito ampla e existe um choque muito grande entre conhecimento acadêmico e conhecimento industrial (as vezes o choque é maior do que realmente é, também...).

Eu acho que existe uma mitologia em cima da faculdade; infelizmente MUITA gente faz faculdade pensando que está fazendo curso profissionalizante ou vai fazer algo específico para algum nicho do mercado de trabalho, e por isso muita gente se frusta, inclusive. Todavia, as pessoas que fazem faculdade e ENTENDEM que ela ensina conceitos, que aprendem a utilizar esses conceitos e aprendem a aprender com ela, podem se tornar profissionais muito bons (e, eventualmente, mais completos).

Aliás, eu, sinceramente, _não acho_ uma boa idéia fazer faculdade de computação para tentar trabalhar na área. Claro, essa é uma opinião mais pessoal, mas vou tentar explicar meu ponto: para a indústria, a carência está em pessoal especializado em certas ferramentas ou tecnologias (java, .net, php, etc..). Quando você faz faculdade, você não vai aprender nada disso diretamente. Assim, se você quer trabalhar com isso, eventualmente vai ter que ter alguma certificação com a ferramenta X. Por isso, imagino, se você quer "ser rico" e trabalhar com java: tente uma certificação java! É bastante possível consegui-la sem os conhecimentos da faculdade, eu suponho. A faculdade não vai te dar o mesmo emprego.

É claro, que, se você for rico, você pode fazer os dois... Mas nem sempre é uma opção...

Como eu disse lá em cima, eu acho que faculdade ajuda sim uma pessoa à se tornar um bom profissional (principalmente se você souber usar aquilo a seu favor; tem gente, por exemplo, que se revolta que está aprendendo C++ porque quer Java e esquece de entender orientação a objetos). Todavia, no fim das contas, é possível que muito pouco da faculdade vai acabar sendo usado na indústria (claro que existem casos e casos; alguém que faz ERP usa bem menos conhecimentos agregados lá do que um engenheiro elétrico que vai programar pra embbeded)...

Enfim, não sei se ficou claro...

_______________

http://www.clubecetico.org

Dennes's picture

Oi, Oceanos !

Não tem como ficar claro, esta é a confusão existente entre a educação e a evolução tecnológica.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Wallacy's picture

Acho que o cenário que você descreveu está mais relacionado ao "nível" da linguagem que necessariamente ao RAD, posso está errado, porém acho que sim.

Sobre o KWriter:

Eu uso ele para programar C! (O kate também)

Gosto muito do eclipse, porém uso o KWriter em conjunto afim de melhorar a produtividade, nem sempre a IDE é capaz de suprir todas as necessidades do programador, então acho muito valido ensinar alguem a programar em um "KWriter" da vida, pois ele será futuramente um profissional com um leque maior de opções e capacidades.

Convenhamos, já que o KWriter não corrige os problemas, o cara vai aprender na marra a programar com o menor numero de erros possíveis, só ai na vida profissional do cara, mesmo que ele nunca use o KWriter o resto de sua vida já vai ser grande feito, e vai acrescer e muito na produtividade final de qualquer aplicação que ele desenvolver. Afinal a parte mais "chata" da programação é justamente essa manutenção.

Em minha Universidade tinha um professor que era "viciado" em automação, e outro não. No final do semestre estranhamente o pessoal que não tinha aula com esse professor (o que adorava automação) demoravam cerca de 43% a mais para fazer a prova final (que era unificada), pois toda vez que acontecia um erro, demoravam "seculos" para arrumar, pois não tinham "calo" nas mãos com esse tipo de problema.

Em ambiente escolar, acho que essa é uma grande preocupação! Focar o máximo em conceitos e em praticas, mesmo que no mercado de trabalho seja obsoleto é o ideal. É muito mais fácil para alguem que faz "tudo na mão" usar uma ferramenta de automação qualquer que outra que só usa esse tipo de ferramenta, até para tratar os problemas.

E claro, não estou falando para todo mundo usar Assembly, uma coisa é aprender todas as minucias de uma linguagem X, outra é usar ferramentas de automação (seja ela qual for) para essa mesma linguagem.

magno's picture
Quote:

Sobre o KWriter: Eu uso ele para programar C! (O kate também)

Eu já fui a um seminário de realidade virtual onde a gente passou mais tempo corrigindo nome de variável escrito errado (no Kate) que de fato usando as ferramentas desenvolvidas pela faculdade. No fim a pegou a ferramenta na internet para rodar em casa no Visual Studio. Rápido, eficiente e sem ter que ouvir um cara ensinar a 20 pessoas como corrigir duas dúzias de linhas de código.

Quote:

acho muito válido ensinar alguém a programar em um "KWriter" da vida, pois ele será futuramente um profissional com um leque maior de opções e capacidades.

Eu gosto de programação por causa do potencial dela como ferramenta. Alguns profissionais não se podem dar ao trabalho de reinventar a roda e fazer as coisas na mão, quando se pode dispor de uma ferramenta rápida para fazer o que deve ser feito.

Já vi problemas que levam 8 horas serem resolvidos em duas horas programando (e daí pra nunca mais). Um problema que levaria dias programando ser resolvido em 30 minutos fazendo uma planilha inteligente no Excel e deixando um "manual de instruções" nas colunas do lado.

Eu sei usar a tabela Price mas usar PGTO(payment) no Excel dá menos trabalho. Solver ou Atingir Meta pode ser mais fácil de implementar que Newton–Raphson.

Para quem está mais preocupado com a resistência do ar ou com a composição do cimento, a programação deve ser encarada mais como um meio que como o objetivo. Se a ferramenta ajudar, tanto melhor.

cafuin's picture

Você parece estar falando de IDE e não só de RAD.

"Para quem está mais preocupado com a resistência do ar ou com a composição do cimento, a programação deve ser encarada mais como um meio que como o objetivo. Se a ferramenta ajudar, tanto melhor."

Com python por exemplo é muito rápido fazer praticamente tudo, mesmo usando só o console.

Claro, bem melhor fazer com um editor mais amigável Smiling.

magno's picture

Estou falando de tudo um pouco. Tudo o que puder ajudar o programador a ser mais eficiente é válido, seja IDE, RAD ou só o poder da linguagem.

Usar { } é bem mais fácil que pensar em termos de Begin/End. Sistema de "Completação" de nomes ajuda a digitação e permite correr os termos sem ter que lançar mão do manual da classe. Um Just-In-Time Debugger faz um bem danado na hora de achar os erros.

Wallacy's picture

Nunca demorei mais que alguns segundos para trocar o nome de uma variável no KWrite. Isso é bem relativo, acho que depende da forma de uso de cada um.

E como eu disse, na maior parte do tempo eu uso o KWrite em conjunto com outras ferramentas.

E é justamente nesse ponto que queria tocar: "A ferramenta ajudar", afinal a melhor coisa é não precisar de ajuda, 20 minutos corrigindo um erro já são 20 minutos "perdidos" corrigindo um erro!

Por isso citei que em ambiente de ensino é muito interessante fazer o aluno "apanhar" para melhorar a "precisão". Já no mercado de trabalho... Pode usar até macumba se for necessário para automatizar o desenvolvimento.

Eu não sou contra em usar tais ferramentas, só não considero adequada para o ambiente de ensino. Confesso que antes de usar tais praticas eu era um programador muito mais desatento, e no meu caso não estou nem um pouco preocupado em resistência do ar ou composição do cimento, só com a programação em sí.

Dennes's picture

Oi, Wallacy !

Quote:

Por isso citei que em ambiente de ensino é muito interessante fazer o aluno "apanhar" para melhorar a "precisão".

Concordo. A experiência com os erros e a experiência sem RAD permite que um desenvolvedor, ao olhar uma mesagem de erro, saiba com muito mais precisão o que a mensagem em questão significa.

O grande problema é conseguir juntar as duas coisas.

Existem pontos de desenvolvimento em que considero o RAD algo já fixo, por favor, corrija meu engano. Mas me refiro exatamente ao 3o parágrafo de baixo para cima no artigo.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi, Wallacy !

Quote:

Gosto muito do eclipse, porém uso o KWriter em conjunto afim de melhorar a produtividade, nem sempre a IDE é capaz de suprir todas as necessidades do programador, então acho muito valido ensinar alguem a programar em um "KWriter" da vida, pois ele será futuramente um profissional com um leque maior de opções e capacidades.

O ponto que mais destaco ai é o fato da IDE nem sempre ser capaz de suprir todas as necessidades. Isso é uma total verdade, mas apenas indica que ainda não chegamos ao nível de RAD adequado.

Posso falar do ambiente em que trabalho : A IDE não supre todas as necessidades, mas o trabalho com webcontrols fornecido pelo ambiente já é por si só um trabalho RAD, me afastando por completo do trabalho não RAD.

Quote:

Em ambiente escolar, acho que essa é uma grande preocupação! Focar o máximo em conceitos e em praticas, mesmo que no mercado de trabalho seja obsoleto é o ideal. É muito mais fácil para alguem que faz "tudo na mão" usar uma ferramenta de automação qualquer que outra que só usa esse tipo de ferramenta, até para tratar os problemas.

Fato. É a realidade de hoje. Mas essa realidade já começa a mudar. Veja o desafio que propus no 3o parágrafo, de baixo para cima. Consegue executar esse desafio sem nenhuma ferramenta RAD, apenas o Kwriter ?

Isso é um sinal da evolução do RAD e de como ele veio para ficar.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

 

Wallacy's picture

Talvez, em python quem sabe?

Não vou tentar para saber, porém existe uma diferença bem grande em "conseguir fazer" e o tempo que demora para executar tal feito.

Ou seja, a pergunta deveria ser se eu tenho coragem de tentar fazer tal coisa só com o KWrite.

Dennes's picture

Oi, Wallacy !

Que é possível, com certeza é. Mas já vi especulações sobre serem gastas mais de 50 mil linhas de código para isso. Mais do que uma perda de produtividade, se torna inviável.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Ola Dennes,

Ao menos Python também tem uma lib de Webservices, e diz ae que suporta SOAP 1.1, agora se tem tudo que você falou lá no artigo eu não sei. Principalmente se suporta WS-Security, pois não consegui achar o que é isso e se está dentro do SOAP 1.1 e/ou WSDL.

http://pywebsvcs.sourceforge.net/zsi.html
http://pywebsvcs.sourceforge.net/

Wallacy: Se estudar o que é, posso ver com quantas linhas conseguimos fazer um cliente e um servidor usando tudo que está no desafio do artigo. Me parece que já temos um bom pedaço.

[]s

Dennes's picture

Oi, David !

Quote:

Ao menos Python também tem uma lib de Webservices, e diz ae que suporta SOAP 1.1, agora se tem tudo que você falou lá no artigo eu não sei. Principalmente se suporta WS-Security, pois não consegui achar o que é isso e se está dentro do SOAP 1.1 e/ou WSDL.

Mas é essa a questão, David. Essa lib de WebServices do Python vai fazer todo o trabalho de geração do XML em baixo nível, você não vai precisar manipular o XML diretamente, vai trabalhar em mais alto nível.

O que é isso senão (um tipo de) RAD ? Só que neste caso é o tipo que mais se incorporou no processo de desenvolvimento e é este o meu ponto : O RAD que usamos hoje tem a tendência a evoluir e se incorporar ao desenvolvimento da mesma forma que essas libs de webServices do Python.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Legal, parece que desta vez estamos do mesmo lado. Bom vou ler mais sobre RAD e SOAP. Depois a gente discute aqui ou no MSN.

Realmente, fazer algo "na mão" é algo que parece não valer a pena nos dias de hoje, onde os preços precisam diminuir para se manter no mercado, ao mesmo tempo a qualidade precisa no mínimo se manter ou até melhorar a cada iteração de projeto. E depois precisa dar manutenção para o que foi criado, imagina manter uma lib de SOAP que só foi usada em alguns projetos.

[]s

Wallacy's picture

Poucas linhas é a praia do Python, já que ele foca muito em logica.

Só não estou com paciência para desafios no momento.

rod.stuchi's picture

Boa Wallacy falou tudo!
Na universidade é totalmente valido programar nos notepads e KWrites da vida e os professores do meu curso sempre dizem isso "universidade é pra se aprender os conceitos e não ferramentas RADs".

Dennes's picture

Oi, rod !

Pode depender da ferramenta RAD.

O desenvolvimento de webServices utilizando todas as especificações do W3C hoje é uma aventura que, sem RAD, acho impraticável (alguém aqui já experimentou ?)

O conceito é fundamental, mas quando o RAD chega em seu nível adequado de abstração, acho que poderia ser incorporado em geral ao ensino.

Outro problema a parte é a preparação para o mercado de trabalho.

Não estou dizendo que sua afirmação está errada, mas talvez fosse o caso de criar cursos superiores diferentes, com enfoques diferentes. Apenas talvez.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Dennes disse:

O conceito é fundamental, mas quando o RAD chega em seu nível adequado de abstração, acho que poderia ser incorporado em geral ao ensino.

Outro problema a parte é a preparação para o mercado de trabalho.

Cara, esse é o problema, você prega soluções RAD como se fossem a salvação da humanidade, mas isso não explica o fato de que a microsoft contrata mais programadores de C e C++ do que de tecnologias .NET.

Provavelmente a Sun também contrata mais programadores de C, C++ e até mesmo assembly do que programadores java.

Alto nivel é ótimo pra produtividade, mas aprender com RAD torna programadores incapazes de resolver problemas para quais a ferramenta não ofereça solução.

Quando vejo um cientista da computação dizendo que só aprende java, de certa forma fico indignado, faculdade não deve preparar pro mercado de trabalho, deve ensinar conceitos e preparar o aluno para que ele esteja apto a utilizar qualquer ferramenta que joguem em sua mão.

Ensinar ferramentas torna os programadores limitados, já conceitos podem ser aplicados em qualquer ferramenta.

Imagine que o patrão peça pra um programador que toda sua vida usou somente ferramentas RAD, pra que ele construa uma função que faça o computador voar e dar cinco voltas ao redor mundo e depois pouse no lugar de onde saiu.

O programador RAD vai ficar perdido procurando botões onde clicar, o que aprendeu conceitos vai dar um jeito de escrever aquilo no braço.

O seu desafio pode ser dificil, pode levar 5 milhões de linhas pra ser feito, mas um estudante deve aprender a fazer sem RAD, pra aprender como funciona.

No mercado de trabalho é outra história, mas dentro de uma instituição de ensino, sacrificar o aprendizado em nome da produtividade é a maior estupidez de que tenho noticia.

Dennes's picture

Oi, Thomas !

Quote:

Cara, esse é o problema, você prega soluções RAD como se fossem a salvação da humanidade, mas isso não explica o fato de que a microsoft contrata mais programadores de C e C++ do que de tecnologias .NET.

Provavelmente a Sun também contrata mais programadores de C, C++ e até mesmo assembly do que programadores java.

Estamos falando de coisas diferentes. Uma coisa é usar o RAD para desenvolver aplicações comerciais, outra coia bem diferente é desenvolver ferramentas para desenvolvedores.

Perfis de trabalho diferentes e cheguei a comentar em outro trecho, profissões diferentes.

Quote:

Quando vejo um cientista da computação dizendo que só aprende java, de certa forma fico indignado, faculdade não deve preparar pro mercado de trabalho, deve ensinar conceitos e preparar o aluno para que ele esteja apto a utilizar qualquer ferramenta que joguem em sua mão.

Não discordo de forma alguma, mas trata-se de um problema educacional : Quem, então, prepara para o mercado de trabalho ?

Quote:

O seu desafio pode ser dificil, pode levar 5 milhões de linhas pra ser feito, mas um estudante deve aprender a fazer sem RAD, pra aprender como funciona.

Especificamente sobre o desafio em questão, seria um meio termo. Escrever as 5 milhões de linhas não geraria um aprendizado de como funciona. O aprendizado do conceito é essencial, mas nesse caso o aprendizado do conceito não significa escrever as linhas de código.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

garoa's picture

Tenho que concordar com o Dennes aqui: realmente IDEs RAD são para desenvolvimento rápido de aplicações comerciais, não infraestrutura.

No entanto, RAD pra mim deveria ser a busca por linguagens e bibliotecas de mais alto nível e mais expressivas, não geradores de páginas de código-wrapper para satisfazer compiladores ou preprocessadores.

Dennes's picture

Oi, Garoa !

Quote:

No entanto, RAD pra mim deveria ser a busca por linguagens e bibliotecas de mais alto nível e mais expressivas, não geradores de páginas de código-wrapper para satisfazer compiladores ou preprocessadores.

Já observei tantas variações do RAD que não me arrisco mais a dizer o que seria um RAD ideal.

Na época do VB 6 por exemplo, tinhamos essas bibliotecas de mais alto nivel, na forma dos controles activeX, nem por isso aquele RAD funcionou.

Hoje o framework .NET usa um meio termo das duas coisas.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Quote:

Estamos falando de coisas diferentes. Uma coisa é usar o RAD para desenvolver aplicações comerciais, outra coia bem diferente é desenvolver ferramentas para desenvolvedores.

Perfis de trabalho diferentes e cheguei a comentar em outro trecho, profissões diferentes.

Claro, perfis diferentes, mas ambos preenchidos pela mesma classe de profissionais, programadores.

Quote:

Não discordo de forma alguma, mas trata-se de um problema educacional : Quem, então, prepara para o mercado de trabalho?

Cara, talvez o próprio aluno, eu não tenho essa a resposta, mas a faculdade é que não deveria ser, ela deveria formar pesquisadores (no sentido de pessoas que possam aprender coisas novas por si mesmas).
Faculdades que ensinam ferramentas talvez sejam um dos motivos do Brasil ser tão dependente de tecnologia externa, aqui usa-se muito e cria-se pouco.

Ainda entra nisso mais uma questão, se faculdades de Tecnologia começarem a ensinar ferramentas RAD só porque são boas, de onde virão os futuros desenvolvedores de drivers, sistemas operacionais, linguagens de programação e compiladores?
Somente de fora do país?

Além disso, existem cursos profissionalizantes que ensinam ferramentas.
Sun, Microsoft, IBM, HP, Oracle, RedHat todas elas oferecem alguma espécie de curso sobre suas tecnologias.

Sem contar com o fato de que um estudante bem preparado pode aprender tecnologias novas muito mais rápido do que se for um usuário de uma única ferramenta.

Quote:

O aprendizado do conceito é essencial, mas nesse caso o aprendizado do conceito não significa escrever as linhas de código.

Não mesmo, nem sempre é necessário escrever código, mas se o cara não souber como aquilo acontece por trás dos panos, então ele não entendeu o conceito.
E sejamos honestos, usando componentes prontos é que ele não vai saber mesmo como acontece.

Dennes's picture

Oi, Thomas !

Quote:

Claro, perfis diferentes, mas ambos preenchidos pela mesma classe de profissionais, programadores.

Mas por quanto tempo usaremos o termo "programadores" para nos referir a perfis tão distintos e como consequencia ficar um perfil denegrindo o outro devido ao conhecimento totalmente diferente necessário a cada perfil ?

Quote:

Cara, talvez o próprio aluno, eu não tenho essa a resposta, mas a faculdade é que não deveria ser, ela deveria formar pesquisadores (no sentido de pessoas que possam aprender coisas novas por si mesmas).

Os parêntesis salvam o parágrafo e tenho que concordar, mas não podemos cair no erro de isolar a faculdade do mercado de trabalho.

Quote:

Faculdades que ensinam ferramentas talvez sejam um dos motivos do Brasil ser tão dependente de tecnologia externa, aqui usa-se muito e cria-se pouco.

É complicado achar os limites entre esta questão e o ficar ensinando a recriar a roda.

Quote:

Ainda entra nisso mais uma questão, se faculdades de Tecnologia começarem a ensinar ferramentas RAD só porque são boas, de onde virão os futuros desenvolvedores de drivers, sistemas operacionais, linguagens de programação e compiladores?
Somente de fora do país?

Voltamos ao ponto lá de cima, será que não estamos falando de duas profissões diferentes, dois ramos diferentes de carreira que estão prestes a se separar ?

Quote:

Além disso, existem cursos profissionalizantes que ensinam ferramentas.
Sun, Microsoft, IBM, HP, Oracle, RedHat todas elas oferecem alguma espécie de curso sobre suas tecnologias.

Caros, consequentemente pouco acessíveis... isso para limitar minhas críticas por ai...

Quote:

E sejamos honestos, usando componentes prontos é que ele não vai saber mesmo como acontece.

Depende do nível de abstração dos componentes.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Será que esse jabá todo tá servindo pra alguma coisa, alguém daqui já se interessou pelo curso de ASP.NET do senhor Búfalo. Tento imaginar o nível desse curso, se for algo próximo dos artigos dele, só deve ter gente abitolada rumo ao mercado.

Ubiratan.apo's picture

Acho que existe alguma confusão nesse post, o RAD não começou a ficar conhecido com o VB, muito antes do VB eu já fazia prototipação contínua em Mainframes utilizando Linc II ou Cogen, e isso foi em 88, o RAD foi batizado por James Martin em 1991, mas antes disso já existia com outro nome. Outro problema que RAD é uma metodologia que utiliza ferramentas, não somente uma ferramenta.

Sobre o .Net ele foi o último dos frameworks a aparecerem antes dele existiu o SmallTalk criado na década de 70, o NextStep que hoje é conhecido como Cocoa e tem outro filho chamado WebObjects, depois surgiram o Java e o QT, o .Net pode ser considerado o mais recente deles, mas é novidade e genial só no mundo Microsoft, é só comparar o Cocoa ou mesmo o QT com o .Net para ver que ele tem que evoluir muito para alcançar o mesmo grau de sofisticação.

Não sei qual a finalidade do post, parece mais um histórico de desenvolvimento no ambiente Microsoft esquecendo que existe um mundo fora da MS que foi totalmente ignorado.

Dennes's picture

Oi, Ubiratan !

Quote:

Acho que existe alguma confusão nesse post, o RAD não começou a ficar conhecido com o VB, muito antes do VB eu já fazia prototipação contínua em Mainframes utilizando Linc II ou Cogen, e isso foi em 88, o RAD foi batizado por James Martin em 1991, mas antes disso já existia com outro nome. Outro problema que RAD é uma metodologia que utiliza ferramentas, não somente uma ferramenta.

Obrigado pela contribuição ! Imaginei que o artigo seria por demais extenso e no final abordando dois assuntos muito dispares se incluisse isso.

As imagens que coloquei no artigo referem-e ao RAD como metodologia, apesar de não ter abordado ele no texto. Poderia falar mais sobre o assunto ? Quem sabe até produzir um artigo complementar ?

Fiquei especialmente curioso em saber se o RAD em Mainframe já envolvia uso de ferramentas RAD ou era ainda a metodologia por si só.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Ubiratan.apo's picture
Quote:

Fiquei especialmente curioso em saber se o RAD em Mainframe já envolvia uso de ferramentas RAD ou era ainda a metodologia por si só.

Existiam ferramentas, por exemplo no LINC II você definia uma tela texto em um "modo gráfico" e dava atributos aos campos (texto, número, moeda, tamanho, apresentação, validação, etc) a partir dai o LINC já gerava os programas para manipular sua tela e a base de dados para suporta-la, no caso de modificações o sistema já modificava e reorganizava seu DB. Quando você acabava de "desenhar" a tela ela já funcionava. Ainda existia a possibilidade de definir procedimentos para serem executados na carga, exibição ou quando fosse salvar a tela. Isso permitia que você sentasse com um usuário em frente ao terminal e fosse desenvolvendo o sistema interativamente, a cada geração do sistema o usuário já podia utiliza-lo e só era necessário fazer refinamentos. Por isso o nome inicial do RAD era prototipação contínua, e os protótipos gerados já eram parte do sistema definitivo, eram mais versões novas do sistema que protótipos.

A ferramenta era tão fácil de usar que acarretava dois problemas, um analista pouco experiente poderia trazer o sistema todo abaixo (imagine mandar reorganizar o DB em um mainframe a cada 5 minutos) e do lado funcional o desenvolvimento do sistema tendia a ser eterno, sempre havia uma coisinha a mais para fazer. Daí que entrava a metodologia para tentar dar um pouco de ordem nessa bagunça.

Isso rodava em mainframes UNISYS, no mundo IBM existiam equivalentes, mas nenhum tão desenvolvido quanto o LINC II.

Se você quiser fazer um pouco de arqueologia em RAD e IDE recomendo que você baixe o Squeak é um ambiente SmallTalk opensource bastante poderoso, lógico que está bastante modificado em relação ao original da década de 70, mas os conceitos básicos são os mesmos. Para ver o que é capaz de fazer com o Squeak baixe o Scratch, é uma VM Squeak desenvolvida para ensinar conceitos de programação para crianças, é simplesmente espetacular o que dá para ser feito com ela.

Ao invés de RAD e IDE estou pensando em escrever um artigo sobre esses ambientes de programação para crianças, Scratch, eToys e Alice. São projetos que a maioria das pessoas da área não conhece e são fascinantes.

Dennes's picture

Oi, Ubiratan !

Quote:

Ao invés de RAD e IDE estou pensando em escrever um artigo sobre esses ambientes de programação para crianças, Scratch, eToys e Alice. São projetos que a maioria das pessoas da área não conhece e são fascinantes.

Já me deixou com vontade de ler !

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Eu acho muito engraçado o pessoal daqui...
Quando alguém fala do Firefox por exemplo, como o Download Day, eu num vejo ninguém metendo o pau no post pq o autor num falou do IE, reclamando que existe um mundo Microsoft também. Mas se o cara fala de Asp.Net, ai já aparece todo mundo falando que é propaganda, pq ele num falou de outras tecnologias.
Pow, se eu quero falar de um produto, eu num tenho que ficar falando dos outros não. Alguém faz um post sobre uma camera samsung....e vc num gosta? Beleza, deixa pra lá, tem gente que quer ler. Vc gosta de camera Benq? Beleza......espera aparecer uma e lê. Simples assim.
Isso aqui parece blog de futebol, com fulano torcendo pra um time ou pra outro.
Povo pra reclamar de tudo. Vai ler o que interessa e pronto...critica se for algo positivo, ou então melhor ficar calado.
Gustavo Barros

Mas falando sobre o Post...
Só acho que ficar fazendo propaganda da empresa (bufalo sei lá o que) é demais. Ficar fazendo Jabá é ridiculo mesmo.
Agora sobre o Asp.Net, eu acho MUITO bom. Já tive problemas na utilização de vários browsers sim, mas da mesma forma que tive com JSP por exemplo.
Isso é muito do Designer ou do programador ( se estiver assumindo o papel de designer também). Mesmo pq tanto o IE como o Firefox possuem inúmeros bugs, e ficar controlando isso é um saco realmente.
Mas um site bem planejado pode ser feito tanto com JSP, como Asp.Net ou sei lá o que mais.
PS: Se esses POSTs continuarem sendo Jabá da empresa do autor ai, eu vou ignorar o posts. Mas se for pra passar conteúdo tecnico, seja Microsoft, Ibm, Sun ou sei lá o que mais....vou achar ótimo.
Gustavo Barros

Dennes's picture

Oi, Gustavo !

Quote:

Só acho que ficar fazendo propaganda da empresa (bufalo sei lá o que) é demais. Ficar fazendo Jabá é ridiculo mesmo.

Desafio você a mostrar um link no artigo que não tenha relação com o tópico em questão.

Será que sua acusação realmente não tem nada a ver com nossa discussão pessoal em uma mail list ? Já que trata-se de uma discussão pessoal, por que não ignora de uma vez meus posts ?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Witaro's picture

Sugiro que desenvolvedores sejam pragmáticos (Procurem por "programação pragmática"). Ou seja, pensem duas vezes sobre uma IDE fazendo tudo por você, quem a "vende" (normalmente) fará o possível para você depender ainda mais dela. Algo como um traficante. Então, produtividade e aprendizagem, sim. Drogas, não. Seja livre, use se precisar, mas não crie dependência. Evite o caminho fácil (principalmente no começo), pois no fim o preço a pagar será mais alto...

davidkwast's picture

É esse tipo de coisa que se percebe na lista de Python, onde a maioria não usa IDE. Concordo com esse ponto de vista, posso brincar de python até no meu celular se tiver alguma dúvida. Imagina ter que ligar o PC e abrir uma IDE...

[]s

Dennes's picture

Oi, Witaro !

Isso é um problema da realidade atual, em que estamos. Mas precisamos também olhar além para evoluir.

Hoje somos totalmente dependentes de panelas. Como fazer comida sem panelas ? Dependemos delas. Só que a dependencia se tornou aceita e temos diversos fabricantes de panelas.

O RAD ainda não é totalmente aceito como parte do processo de evolução tecnológica. Quando for, teremos inúmeros fabricantes evoluindo suas ferramentas RAD em velocidade muito maior do que ocorre atualmente.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Witaro's picture

Oi, Dennes!

Cara, desculpa, mas acho essa metáfora da panela meio furada... Panela é uma coisa estática e cuja essência/princípio é aberta para todos, qualquer um entende facilmente e tal qual em alguns "Reality Show" de sobrevivência é possível reproduzí-la com materiais encontrados na própria natureza. O RAD pago estaria mais para uma espécie de intérprete que você paga caro para traduzir a comunicação entre você e uma certa cultura/língua. Você não precisa aprender nada, só pagar. Mas não compre ainda! O melhor é que com o tempo você pode continuar sem aprender nada e parar no tempo, pois seu intérprete abstrai pra você as mudanças recentes naquela cultura e língua. E você vai ficando pra trás, só precisa pagar a atualização dele... Ah, talvez mais pra frente seja necessário pagar um curso para você aprender a se comunicar com ele usando algumas novas expressões (que não são na língua alvo)... Na verdade, esse intermediário pode ser um malandro que pode ganhar muito de você nesse esquema... Ainda mais quando o intérprete na verdade já se encontrar desatualizado porque a cultura/língua do momento já é outra e você não percebeu porque ele filtrava os problemas para você... Enfim, se exagero é só pra deixar o alerta. Não gosto de radicalismos e dependendo do contexto as coisas mudam. Afinal, melhor que usar Software livre é procurar ser um Pensador livre. Maelhor que usar Open Source é manter a mente aberta.

Dennes's picture

Oi, Witaro !

Quote:

Cara, desculpa, mas acho essa metáfora da panela meio furada... Panela é uma coisa estática e cuja essência/princípio é aberta para todos, qualquer um entende facilmente e tal qual em alguns "Reality Show" de sobrevivência é possível reproduzí-la com materiais encontrados na própria natureza.

Assim como o RAD é um conceito que, quando tem sucesso, inúmeros fabricantes podem reproduzir.

Quanto a sua metáfora do intérprete, nesse caso seria melhor escrever tudo em assembly.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Witaro's picture
Quote:

Assim como o RAD é um conceito que, quando tem sucesso, inúmeros fabricantes podem reproduzir.

Pensemos no cenário onde tivéssemos um fornecedor de ".Comida" que lança ".Comida 2.0" que dependesse de uma "Panela Studio" nova e cheia de incrementos que ela fornece mais rapidamente que os concorrentes que também fazem "Panelas", mas nada tão atualizado e otimizado quanto a "Panela Studio", afinal, o "Fornecedor" fornece a ".Comida" e sabe os "macetes" para melhor prepará-la segundo as versões que lança... Putz. Lembra-me o Arquiteto da Matrix que conta com a ilusão dos humanos achando que possuem escolhas... De qualquer forma, não descarto o uso da ".Comida", vez por outra pode ser necessário comer "Fast Food", embora eu prefira coisas mais nutrientes. Só defendo que há alternativas e devemos ficarmos bem ciente quanto a certos riscos, pois parece-me que alguns RADs são mais propensos a criar dependência que outros (o que me lembra aquela metáfora do traficante...).

Quanto a "Intérprete/Assembly", vamos dizer que eu fico feliz por "Inglês" e "Português" não serem patenteados e/ou possuírem um único fornecedor. Como diz no manifesto ágil, "Indivíduos e a interação entre eles são mais importantes que processos e ferramentas".

Dennes's picture

Oi, Witaro !

Hoje nossa alimentação não tem vínculo direto com os fabricantes de panelas, uma coisa não está diretamente interligada a outra.

Da mesma forma, a evolução do RAD nos levará ao mesmo ponto.

Procure, aqui mesmo no post, os comentários do David. Ele fala sobre as bibliotecas de Python para criação de webServices, o que não deixa de ser uma forma de RAD.

Ou seja : Quer seja em Python, ASP.NET e poderia apostar que em inúmeras outras tecnologias também, o RAD já está incorporado na geração de webServices.

Isso é um exemplo de RAD que funciona tão bem a ponto de se tornar comum, de se incorporar a tecnologia, é disso que estou falando, é nessa direção que visualizo a evolução do RAD.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Witaro's picture
Quote:

Hoje nossa alimentação não tem vínculo direto com os fabricantes de panelas, uma coisa não está diretamente interligada a outra.

Ainda bem, não? Mas o .net está com o VS nos termos que exemplifiquei.
E sobre o Python, ainda bem que a licença é essa:
http://www.python.org/psf/license/

E *Ferramentas* RAD são bem diferente de Bibliotecas, por sinal, as libs citadas de webservices também usam a mesma licença do Python. Sem IDE + Sem intermediários + Fontes + Direitos = Baixa dependência.

Dennes's picture

Oi, Witaro,

Quanto a diferença entre RAD e bibliotecas, esta diferença pode ser sutil se você considerar a evolução da época e quando montavamos o XML manualmente apra hoje.

Quanto ao resto, ai o assunto já não é RAD e prefiro não entrar neste assunto.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

Incrivel como todo post do Dennes vem com essa "cara" de propaganda, ja eh algo incorporado aos dedos e mente dele.. Laughing out loud

Eu acho o visual studio uma boa ferramenta, trabalho com ela o dia todo, a facilidade para fazer controle de versao eh absurdamente superior a qualquer outra ferramenta que conheco para web.

O ASP.net esta muito bom, "encorpado", agil.

Mas isso de deixar ele controlar seu HTML, me desculpe, mas o HTML para um site serio que precisa ser bem indexado e acessivel eh bem ruim ainda, muito melhor que no passado, mas ruim.

====================================
Yoomp - A Rede Social dos Blogueiros
http://www.yoomp.com

Fazedor de Site
http://www.fazedordesite.com

wallck's picture

Depende do que você está fazendo.

Trabalho com ASP.NET pouco mais de 1 ano e a única queixa com o HTML gerado é a questão da identação - Cá entra nós, firula para os dias de hoje. "Tableless it!"

Adepto Lordware
http://www.lordware.com.br
wallace@lordware.com.br

manuelB's picture

Olha, todo mundo sabe o Dennes posta sobre Microsoft, não é novidade. Se ele faz propaganda grande coisa, pois é um artigo técnico interessante. Eu nunca vi o MeioBit como fonte imparcial de informação, pelo contrário, cada redator tem suas preferências e deixa isso claro. Cabe a quem lê ter senso crítico.
Agora, falando em RAD, o ambiente mais RAD que já trabalhei foi um ambiente Oracle (Banco Oracle + ferramentas de programação Oracle + ferramentas de Projeto e documentação Oracle). Era absurdo o pouco tempo que se levava pra desenvolver uma aplicação e a pouca quantidade de bugs. A gente fazia com essas ferramentas o que a gente levaria pelo menos 4x mais tempo usando VB ou Delphi ou pelo menos 12x mais tempo se fosse fazer em C.
Mas claro que não eram as ferramentas mais versáteis do mundo, mas não tem ferramenta perfeita.
Hoje uso Lazarus, é cheio de bugs, mas é simples, leve, pra distribuir o programa é fácil, e é "de gratis". Pra coisas que não envolvam interface com o usuário eu vou de C++ mesmo.

-------------------------------------
Comporte-se ou saia dos festejos!

Eu sou meio cético quanto as ferramentas RAD, eu as vejo como "solução para gerente de TI".

Ferramentas RAD, processo de desenvolvimento rígido, fábrica de software, certificações entre outros conceitos possuem um vantagem aparente muito grande para os gerentes e donos de empresas. É lindo imaginar um mundo onde arrastando um ou dois componentes eu consigo entregar um software completo para meus clientes. Assim como é lindo eu saber que tudo que meus desenvolvedores estão fazendo esta documentado e eu consigo controlar da forma que eu quiser, é só ver meu diagrama de GANTT. Que é tão lindo quanto eu criar uma linha de produção de software, fazendo pequenas modificações e vendendo para várias empresas. Tendo a mesma beleza de eu pagar milhões de dólares por um selo que representará que nunca mais vou atrasar um projeto.

Tudo isso é o que está sendo vendido no mercado, muita gente esta ganhando dinheiro e irá ganhar muito mais. O grande problema que tudo isso está baseado em suportes/premissas fracas e que pode desmoronar a qualquer momento.

Como já mencionado, com RAD você fica muito dependente do seu fornecedor, é muito provável que para você acompanhar as inovações você tenha que esperar uma nova versão ou um update. Os projetos podem se transformar em moldes da ferramenta, não havendo diferenciação entre o que você faz com o que seu concorrente faz (ai é só vender mais barato, não é não?!?! eihn?!). Os gerentes ficarão mal acostumados, uma vez que compraram uma ferramenta com a promessa de desenvolvimento rápido, eles vão querer desenvolvimento rápido. Mas um projeto não é assim, vendo a conversa do Dennes com Fabão você encontra um exemplo de que essa velocidade não seria atingida caso o projeto necessitasse de padronização WEB, com isso já da pra imaginar os peões desenvolvedores trabalhando horas extras, estressados e xingando a empresa que inventou este framework. E ai recorremos a um dos grandes problemas das empresas de desenvolvimento, o total desprezo com os empregados de menor hierarquia. Numa software house poucos gerentes se preocupam com a principal fonte de renda da empresa, os desenvolvedores. Como eu mencionei, é fácil ver relatório, fácil ver diagrama, é fácil um ÚNICO arquiteto estimar TODO um projeto em cima de uma ferramenta RAD e esperar que os desenvolvedores cumpram no prazo com uma taxa de 10% de erro.

Não sou totalmente contra ao RAD, mesmo porque sou fã dos atuais framework de desenvolvimento WEB (Rails, Django, CakePHP) (para quem falar que não é RAD eu já digo que discordo com sua opinião), mas tem que ser bem implantado. Para mim, a decisão de se utilizar uma ferramenta dessa tem que vir dos dois lados, de cima e baixo. E lógico, nunca pensar que existe uma solução para todos os problemas.

Dennes's picture

Oi, João !

De fato, o uso de RAD pode criar expectativas gerenciais falsas, especialmente em ambientes com uma gerência de projeto falha (muitos? não vou dizer todos, mas...)

Um ponto chave que destaquei no post é a forma como o RAD tem a tendência a se tornar evolução tecnológica e ser totalmente incorporado em nosso dia a dia.

Você falou de RAD como ferramenta. Mas no ASP.NET temos o RAD na forma de webControls, algo que vai muito além da ferramenta.

Já no trabalho com webServices/WCF, a geração de um proxy de acesso ao serviço é algo indispensável hoje (Se alguém puder informar detalhes sobre outras tecnologias a este respeito, pode ser muito legal).

Quando o RAD acerta o jeito, tende a ser totalmente incorporado.

Quanto a ser dependente de fornecedor, isso acontece enquanto ele não é incorporado. No momento em que uma evolução na direção do RAD for vista como avanço tecnológico, todos os fornecedores caminharão nesta direção.

Somos dependentes de panelas hoje, mas não estamos presos a um único fornecedor.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

garoa's picture
Quote:

Eu sou meio cético quanto as ferramentas RAD, eu as vejo como "solução para gerente de TI".

Ferramentas RAD, processo de desenvolvimento rígido, fábrica de software, certificações entre outros conceitos possuem um vantagem aparente muito grande para os gerentes e donos de empresas. É lindo imaginar um mundo onde arrastando um ou dois componentes eu consigo entregar um software completo para meus clientes.

Apoiado 100%.

RAD e fábrica de software são a mesma coisa por baixo dos panos:
http://www.slideshare.net/rodneialquati/catwalk-nd...

hamacker's picture

Embora, não haja insobrepujancia de um modelo por outro. RAD é unir programas que facilitam a sua vida, as vezes na mesma IDE, as vezes não. O turbo-c/turbo-pascal foram os precursores de usarem a mesma IDE para unir editor, debugger, compilador.

Mas isso mudou realmente, as vezes o melhor editor de texto não é o que vem com a IDE, nem o melhor editor de gráficos, nem debugger, nem isql, nem versões,... e assim por diante. Daí ferramentas como Eclipse com a idéia de independência de fornecedor que se acomplam/desacomplam em forma de Views da IDE, e assim se tornando cada vez mais popular.

Daí todos nós usamos uma RAD, talvez não na mesma IDE, mas conceitualmente um caminho pelo qual somos mais rápido reunindo diversas ferramentas que conversam entre sí.

--
Breve na sua locadora: A insustentável leveza do C

aaocs's picture

Eu desisti de ler os post do dennes a partir de agora.
Tenta entreter você com informações relevantes e enfia na sua cabeça sem que você perceba os seus argumentos comerciais.
Anfim, desisto.

OMGWTFBBQ's picture

Deixa eu ver se entendi: você está acusando um dos editores do MB de vendido, é isso?

MaRKauM's picture

Cara, vendido eu não sei, mas que o Dennes adora fazer propaganda da Microsoft em todos os post dele, isso é verdade...

Antes de fazer uma pergunta idiota, pesquise!

Não é acusação, é constatação.
Basta ver o conteudo dos posts...é totalmente diferente dos posts da Patricia, Dori, Cardoso, Leonardo, Ricardo, Marcellus etc...
Estes falam de tecnologia como um todo, as vezes da Apple, as vezes do Linux, do Gmail..enfim....noticias e artigos sobre tecnologias e novidades do mundo da tecnologia...alguns com enfase em determinados assuntos, o Gilson por exemplo so fala sobre fotografias e afins, mas não fala somente sobre uma marca, fala sobre todas.

Essa é a diferença.

Fabião's picture

É até piada comparar os demais editores ao cidadão em questão.

O nível dos posts é tão díspar que realmente é constrangedor.

MaRKauM's picture

Não tem comparação!
Prefiro te convencer a usar Linux do que dizer pro Dennes que existe vida pós MS...

Antes de fazer uma pergunta idiota, pesquise!

Fabião's picture

EU prefiro usar Slackware a ter que passar por aquilo de novo.
Prefiro compilar o Gentoo num Tamagochi.

xzerorj's picture

Concordo com vocês... mas acho sinceramente que os posts do Dennes devem servir de moeda de troca para Microsoft manter um patrocínio no MeioBit.
Taí! Que tal alguns posts comentando como é a infra do POP, qual a solução de backup deles, seus maravilhosos serviços gratuitos??? Já que é pra puxar sardinha, vamos puxar de quem paga ora essas!!!!

Mas falando sério, até pagaria os tais R$ 29,99 só pra não ter que ler mais posts do Dennes.
Há tanta informação sobre tecnologia e ele ainda só consegue enxergar Bill & Cia Foundation...
Fala sério...

†Player Of Dark†'s picture

Vamo lá... todo mundo vai é prar de programar em C/C++, C#, VB, Cobol e sei la mais o que, todo mundo vai passar a usar o GENEXUS agora... Evil
haushuashuasahus...

ps: não conhece Genexus ? sorte a sua... Barf!

---------------------------------------------------
"É certamente prejudicial para as almas tornar uma heresia acreditar no que é provado."(Galileu Galilei)

http://papodeesquina.wordpress.com

davidkwast's picture

Resposta ao Dennes no reply: http://meiobit.com/node/16214#comment-158769

Dennes disse:

Não é desse nível de performance que estou falando. Estou falando de uma perda de performance (arrisquemos... ) nunca antes experimentada, pois todos os ambientes fugiram dela.
Os processadores normalmente fazer um 2+2 com os pés nas costas, mas se forem 2 objetos, o processamento necessário para fazer um simples 2+2 será muito maior.

Acho muito provável que esses tipos mutáveis e imutáveis do Python possam ter justamente relação com isso, para assim como no .NET e no Java, evitarem a perda de performance.

No caso dos tipos numéricos basicos, acredito que há otimizações. Mas a perda de desempenho em relação ãs outras linguagens varia muito. Não sei se ja disse, mas o Youtube é todo em Python, um belo case. Normalmente, a maior parte do tempo que um programa demora para devolver a solução, se concentra em poucas linhas. Para processamento, Python possui diversos módulos de extensão escritos em "C" que cuidam dessa parte repetitiva.

Python e "C" anda praticamente colados, tanto que existem ferramentas que permitem ir de um pro outro muito fácil. Apesar de suas grandes diferenças.

No Sphere Online Judge, um site de desafios de programação, é possível ver o tempo do Python de algumas soluçoes para vário problemas não é tão distante do Java. Mas o consumo de memória é muitas vezes menor (que o Java), mesmo quando o JIT (Psyco) é usado no Python.

Num problema sobre hash, as melhores soluções do Java, C# e Python:
0.32 219M JAVA
0.55 26M C#
0.10 36M PYTH (Pelo consumo de memória, foi usando o JIT)
0.54 3.9M PYTH (Sem JIT)
http://www.spoj.pl/problems/HASHIT
http://www.spoj.pl/ranks/HASHIT/lang=JAVA
http://www.spoj.pl/ranks/HASHIT/lang=CS
http://www.spoj.pl/ranks/HASHIT/lang=PYTH

Nesse caso, o Python levou vantagem por ser uma linguagem de nível muito alto (Very High Leve Language), por ter estruturas complexas muito utilizadas, a VM possui bastante otimização em tudo que é muito usado.

Num problema de ordenação de contas de banco, http://www.spoj.pl/problems/SBANK/ , Python pode demorar quase o dobro com JIT e o triplo sem. A solução consistem em ordernar até 100000 números no seguinte formato 30 10103538 2222 1233 6160 0142 alimentados pelo STDIN.
2.82 187M JAVA
4.65 36M PYTH (JIT)
6.97 3.8M PYTH (Normal)

Nesse site, não é permitido utilizar outros módulos, principalmente os escritos em "C", exceto o de JIT. Os testes são executados num Pentium II com 64 de ram. Cada usuário envia o código-fonte e o site cuida do teste.

Se a perda de desempenho fosse uma grande problema do Python, dificilmente seria uma das 3 linguagens totalmente suportados no Google. Esse não é o maior problema do Python para parecer uma boa linguagem, a forma de programar assusta muito mais, eu brinco dizendo que é melhor esquecer tudo que já sabe e aprender a programar de novo.

E tem umas coisas bem legais que são raras em outras linguagens, como interpretador interativo, nada de compile-time exceptions, somente runtime, exceto erros de sintaxe, delimitação de blocos por espaços e ser 100% open-source desde 1991.

Por isso deve ter sido rezávelmente fácil portar a VM para Symbian, a linguagem para a VM .Net e JVM. Existe pequenos interpretadores para computadores embarcados com 64k com algumas óbvias limitações.

http://www.imitationpickles.org/tinypy/

[]s

Dennes's picture

Oi, David !

Quote:

No caso dos tipos numéricos basicos, acredito que há otimizações.

Mas é justamente sobre isso que estava falando. Não é tão 100% objetos como você citou, nenhuma é.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Fala Dennes,

Se pode herdar o tipo Int e sobrescrever seu métodos. Se posso também fazer isso:

>>> int(5).__add__(int(1))
6
>>> int(5).__add__(int(1)) == 5+1
True
>>> 5 .__add__(1)
6
>>> float(4).__mul__(int(-2))
-8.0

Porque tudo não é objeto?

Até funções, métodos, definição de classes são objetos que eu posso acessar, mudar e criar novos atributos.

>>> def funcao(a, b):
... return a+b
...
>>> dir(funcao)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
>>> funcao(1,2)
3
>>> funcao.__call__(1,2)
3
>>> funcao.__name__
'funcao'
>>> funcao
<function funcao at 0x6a9f0>
>>> funcao.__name__ = 'novo_nome'
>>> funcao
<function novo_nome at 0x6a9f0>
>>> funcao.__name__
'novo_nome'

Não queria entrar nesses detalhes, mas você disse nenhuma linguagem é. Ruby e SmallTalk são muito mais. Python ainda possui mais 2 paradigmas bem diferentes.

[]s

Dennes's picture

Oi, David !

Também existe sobrescrita de operadores no .NET, mas nem por isso quer dizer que os tipos mais básicos, que podem ser tratados diretamente pelo processador, deixam de ser considerados value types.

É deste tratamento interno dado pelas linguagens que estou falando. Superficialmente tudo irá parecer objeto, mas o tratamento interno é diferenciado.

As maiores do mercado fugiram do 100% OO (internamente falando) por causa da degradação de performance que isso geraria. Não conheço uma que não tenha implementado este tratamento diferenciado, se existe, seria interessante analisar a performance.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Fala Dennes,

Não entendi a sua birra. Se eu tenho toda a liberdade que a linguagem/framework/VM me dá, o que me importa o tratamento interno desses tipos? Sempre entendi que o conceito de VM nasceu para fazer isso mesmo, esquecer que processador meu programa vai rodar.

E não sei se há tratamento diferenciado no Python, talvez sim, porque quando um Float se soma com Int ou vice-versa, a VM analisa ambos e faz a operação certa.

A questão de performance não me preocupa. Já tentei mostrar pelo SPOJ que em alguns casos o Python consegue ser até mais rápido que Java e C#, e muitas vezes consome menos memória e dificilmente é muito mais lento a ponto de invibializar alguma solução. Se isso acontencer, há diversas saídas que aproveitam 99% do código escrito em Python.

[]s

Dennes's picture

Oi, David !

Não é birra, é só uma constatação em relação a algo que você havia citado antes :

Quote:

Porque não deixamos os objetos falarem se podem fazer alguma operação com outro objeto, seu valor booleano, sua capacidade de iterar sobre seus dados e outras coisas que vão muito além de getters e setters?

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Fala Dennes,

Bom, não sei o que você entendeu sobre o modo que o Python faz programação OO. Mas com certeza o que eu faço programando vai ser diferente da estrutura do byte-code e com certeza muito diferente quando chegar no processador.

Acho melhor você constatar esse tipo de coisa estudando mais sobre outras linguagens, em vez de tentar usar minhas palavras contra eu mesmo. Com certeza não vou ser capaz de falar as coisas no modo que você quer ouvir, e nem o que você quer ouvir. Não quero colocar na sua cabeça que Python é melhor que tudo que você conhece, mas estou aproveitando essa discussão para mostrar que é outra forma de fazer algumas coisas, com suas vantagens e desvantagens.

Dennes disse:

Oi, David !

Não é birra, é só uma constatação em relação a algo que você havia citado antes :

Quote:

Porque não deixamos os objetos falarem se podem fazer alguma operação com outro objeto, seu valor booleano, sua capacidade de iterar sobre seus dados e outras coisas que vão muito além de getters e setters?

Essa coisa de um objeto dizer tudo que ele pode fazer já existe no Python, e não prejudica o desempenho a ponto de invibilizar aplicações comuns de mercado como Web, Desktop e Servidores.

Se quiser aprender mais sobre esse tipo de coisa:
Objeto que sabe:

Dennes's picture

Oi, David !

Quote:

em vez de tentar usar minhas palavras contra eu mesmo

Pensei que estivessemos debatendo e não discutindo. Minha intenção não chega nem perto disso.

Purismo OO em alto nível todas as linguagens mais sérias já possuem. Então quando citou o purismo no tratamento de objetos, pensei estar se referindo ao purismo em baixo nível, do qual a maioria das linguagens fugiu devido a considerável perda de performance, como citei.

Mas ao falar da separação entre o alto nível e o bytecode, você novamente está falando de purismo de alto nível e isso á é lugar comum entre as linguagens. Por isso simplemente não entendi as afirmações.

[]'s

Dennes

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Fala Dennes,

Sem problemas, as vezes esqueço da palavra debate, discutir é forte demais mesmo.

No baixo nível, não sei até onde é OO e passa a ser bytes de dados e instruções. Só quis deixar claro esse tipo de OO no nível alto não gera problemas de desempenho no Python. O que deixa o Python mais lento que Java e C# é a tipagem dinâmica.

Bom, se quiser debater mais alguma coisa, estou a disposição.

[]s

garoa's picture

Obviamente, é tudo na realidade apenas um conjunto de bytes na memória. Smiling

As únicas linguagens que conheço que realmente tratam tudo, em nível conceitual, uniformemente como objetos são Smalltalk e Ruby. Ambas são em geral um pouco menos rápidas do que as que usam atalhos para baixo nível.

Não importa muito: se estão lentas, joga mais hardware. Tenta jogar mais programadores em um projeto pra ver se decola mais rápido...

garoa's picture

*duplicado*

[...] eu brinco dizendo que é melhor esquecer tudo que já sabe e aprender a programar de novo.

Eu tirei esse ano pra aprender Python. Isso que tu disse é a mais pura verdade. E o lado bom disso é que tu "reaprende a programar" brincando - não há como não passar horas no interpretador interativo testando as coisas que você lê por aí. Laughing out loud

----------
Não sou elefante mas encomodo muita gente...

davidkwast's picture

Um import vale mais do que mil palavras!!!!!

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

[]s

Com certeza vale! Eu já conhecia o import this, mas veio bem a calhar... É essa filosofia pythônica que me mantém cada vez mais interessado na linguagem. Smiling

Tem um pequeno adendo no Python Culture (http://www.python.org/dev/culture/):

Don't take these 19 aphorisms too seriously -- tattooing them on your body is probably a bad idea, for example -- but it's instructive to contemplate them. Some parallels can be drawn to the guiding principles of extreme programming, most notably the emphasis on "Do the simplest thing that can possibly work".

Another principle is "Correctness and clarity before speed." Most of the code in the Python interpreter and standard library is written in a very straightforward style. The developers aren't interested in making the interpreter run faster at the expense of unreadable or hard-to-follow tricky code. In the past working patches have been rejected because they would have made the code too difficult to maintain.

[sarcasmo=ON]E olha que o Guido não é MVP. É só um BDFL.[/sarcasmo]

----------
Não sou elefante mas encomodo muita gente...

Entrar



Design Wenetus