Mantenha-se informado sobre as nossas novidades com nosso newsletter semanal, todas as segundas-feiras
Hoje foi disponibilizada a versão final do primeiro dos três produtos cuja data oficial de lançamento é dia 27/02/2008 : O Visual Studio 2008.
O Visual Studio 2008 traz consigo o lançamento do Framework .NET 3.5, formando os dois um belo conjunto para desenvolvimento de software. A principal novidade do Visual Studio 2008 está ligada aos novos compiladores : C# 3.0 e VB 9.0. Estes novos compiladores possibilitam do surgimento o Linq.
As mudanças realizadas no núcleo do Framework .NET, porém, foram mínimas. A MS IL permanece a mesma, pouca coisa mudou e em geral foram adições. Neste caso, como o Framework consegue suportar algo tão diferente como o Linq ?
Simples : Devido aos compiladores. As novas versões dos compiladores passaram a dar suporte ao Linq e transformar sua síntaxe na velha MS IL de sempre. Alguns testes birutas interessantes já foram feitos mostrando que aplicações compiladas no Framework 3.5 podem rodar, em certos casos, em máquinas que possuem apenas o Framework 2.0, já que a MS IL é a mesma, sendo necessário levar apenas algumas (poucas mesmo) DLLs complementares, mas isso já é de praxe no framework.
Mas afinal o que é o Linq ?
O Linq é uma nova síntaxe que permite que façamos o acesso a coleções de objetos em uma escrita que guarda muitas semelhanças com uma query SQL (para quem duvidava, podem desengavetar o Clipper e o FoxPro! :) . Desta form o Linq permite que objetos sejam manipulados de forma mais semelhante a conjuntos de dados mas também abre espaço para o grande sonho de muitos desenvolvedores : manipular dados como conjuntos de objetos.
Há bastante tempo a Microsoft prometeu o lançamento do Object Spaces, um recurso para permitir esta tão desejada manipulação. O Object Spaces era esperado na versão 2.0 do .NET, mas não veio. Por outro lado, desenvolvedores Java já estavam há um bom tempo habituados com o Hibernate, um framework de mapeamento objeto/relacional para este ambiente.
O atraso A ligeira demora no surgimento de um bom recurso de mapeamento objeto/relacional fez com que o NHibernate - o Hibernate portado para ambiente .NET - conquistasse os desenvolvedores.
Alguns desenvolvedores ficaram realmente apaixonados pelo mapeamento objeto/relacional e fazem questão de utiliza-lo amplamente. Outros, nem tanto. Definitivamente faço parte do 2o conjunto. Demonstrei em um artigo sobre desenvolvimento em camadas e um vídeo sobre desenvolvimento web em camadas a forma como é possível ter produtividade na criação e manutenção de aplicações independentemente do mapeamento objeto/relacional. Porém dai a demonstrar se o mapeamento objeto/relacional tem ou não perdas de performance e produtividade - o que sempre foi uma incógnita, é outra história.
Mas o Linq por si só é uma sintaxe e não um framework de mapeamento objeto/relacional completo. Então... cadê o resto ?
Na própria ferramenta do Visual Studio 2008 encontramos elementos chamados "Linq to SQL" para serem adicionados ao projeto e que geram arquivos .dbml. Desta forma podemos graficamente mapear elementos da base de dados para classes em nossa aplicação.
Esse é o primeiro passo. Mas as classes da aplicação não devem espelhar diretamente a base de dados. Afinal, banco é banco, modelo de classes é modelo de classes e o mapeamento é feito para mapear (que constatação mais óbvia !). Eis que o Linq e o Linq to SQL é apenas o começo, surge então o Entity Framework, um novo conjunto de recursos adicionados ao ADO.NET (que em sua fase beta era chamado de ADO.NETvNext).
O Entity Framework possibilita que o banco relacional seja criado seguindo uma modelagem de entidade/relacionamento enquanto que o modelo de classes seja criado seguindo um modelo UML, então o Entity Framework aparece no meio e interliga os dois. Simples, não ? Tão simples quanto arrastar e soltar graficamente (ao lado você vê um modelo de classes gerado a partir do banco, ainda sem personalizações - clique na imagem para ampliar)
Não existe ainda certeza sobre se o Entity Framework está saindo agora com o Visual Studio ou se vai demorar um pouco mais, mas a impressão é que não passa de 27/02, já que em alumas apresentações (vale a pena assistir) o Entity Framework é apresentado como recurso do SQL Server 2008.
Com estes novos recursos, ficamos então com duas (sendo bem resumido) formas de desenhar a arquitetura de acesso a dados no framework : Utilizando mapeamento objeto/relacional ou utilizando o método tradicional. O próximo passo é começarem a surgir análises comparativas referentes a estes dois métodos.
É interessante ainda observar que o SQL Server 2008, 2o produto com mesma data de lançamento - 27/02/08 - promete a possibilidade de armazenar e manipular facilmente qualquer coisa na base de dados (já imaginou guardar sua sogra na base de dados ?), portanto será uma grande junção de banco e ambiente de desenvolvimento.
Mas o Linq, Linq to SQL e Entity Framework são apenas algumas das principais novidades do Visual Studio 2008. Veja outras :
Inteface de desenvolvimento melhorada
A interface de desenvolvimento web, por exemplo, ficou muito melhor para os designers. O Visual Studio não vai mais destruir o código dos designers como fazia antes (lembram do debate no artigo "Onde estão e para onde vão os designers ?")
Além disso o MS Ajax e MS Ajax Toolkit foi completamente integrado na interface web do Visual Studio, o que nos trouxe boas surpresas, não só para nós, mas também para os desenvolvedores do Ajax Toolkit, que chegaram a se enrolar um pouco para tornar os objetos compatíveis com a nova interface.
Integração com o Framework 3.0
O Visual Studio 2008 vem totalmente integrado ao WPF, WCF e WF, desta forma não precisamos mais utilizar extensões separadas para o desenvolvimento com estas tecnologias, o que é um grande avanço.
Mas não se engane quanto ao WPF : O Visual Studio é para desenvolvedores, então o WPF ainda é focado para desenvolvedores. Para designers deve-se utilizar o Expression Blend. Veja no vídeo abaixo uma mini-demonstração do Expression Blend :
Veja também outros vídeos sobre as demais tecnologias
Código fonte do Framework disponível
Uma das grandes novidades do Framework 3.5 e Visual Studio 2008 é não só a liberação do código fonte do Framework .NET, mas também sua integração de depuração no Visual Studio 2008. Ao depurar uma aplicação você poderá facilmente transitar entre o seu código fonte e o código fonte do Framework
Veja as imagens abaixo, do blog do ScottGu, demonstrando isso (clique para ampliar) :
Multi-Targeting
O Visual Studio 2008 passou a gerar aplicações para todos os frameworks posteriores ao 2.0 (temos o 2.0, 3.0 e 3.5), demonstrando assim a forma como o framework encontra-se cada vez mais íntegro, com poucas mudanças e muitas adições entre uma versão e outra.
Melhorias no ambiente web
Neste ponto temos melhorias tanto na ferramenta como nos recursos do framework em si, tal como nested master pages, suporte amplo ao CSS e debug de javascript, novo objeto ListView, novo objeto LinqDataSource, integração com o MS Ajax (que agora é parte integrante do framework 3.5) e Ajax toolkit, e muito mais.
Junto com o lançamento do Visual Studio e do Framework 3.5 surgem vários recursos novos para os desenvolvedores, já adaptados ao ambiente do 3.5 :
Code4FunDevKit : Um kit de ferramentas bem interessante para os desenvolvedores, incluindo alguns objetos gerenciados de acesso a API's do Windows Vista
Code4FunVistaP2PKit : Um kit de ferramentas para construção de aplicações P2P no Windows Vista
DarkGDK Game Creators : Um kit de ferramentas para construção de jogos através do Visual C++ Express 2008. A imagem a esquerda mostra o kit em ação, clique para ampliar, fica bem melhor.
Aqueles que são assinantes MSDN podem baixar o VS 2008 do MSDN, aqueles que não são podem baixar as versões Express do Visual Studio 2008, que são gratuitas e permitem que você desenvolva os softwares que desejar, compile os comercialize da forma que desejar
Não deixem de conferir também o post do ScottGu sobre o Visual Studio 2008. Para quem desejar aprender mais, já existem muitos livros disponíveis sobre estas novas tecnologias. Cuidado, porém, com treinamentos. Todo treinamento precisa ser no mínimo do Framework 2.0, sendo os mais avançados já abordando o framework 3.0 e 3.5, porém ainda existe muita confusão sobre isso nas empresas de treinamento.
Para aqueles que desejarem conhecer mais sobre estas tecnologias, saibam que meus eventos já agendados serão feitos com as novas ferramentas, ou seja, 24/11 em Vila Maria/SP, 28/11 na UFF/Niterói, 08/12 e 13/12 na Tijuca/RJ, todos abertos ao público, gratuitos. Mais detalhes logo em meu blog ou por e-mail. Também estou a disposição de qualquer universidade que deseje uma palestra sobre o tema, sem custo algum.
"o grande sonho de muitos desenvolvedores : manipular dados como conjuntos de objetos."
Cara, já existem banco de dados orientados a objeto a um bom tempo, e eles são bem poderosos e rápidos, do jeito que você colocou parece que a única solução para manipular dados como objetos são os mapeamentos objeto/relacional, como o Hibernate.
Vide alguns exemplos de SGBDOOs:
http://www.db4o.com
http://www.objectivity.com
http://www.matisse.com/
Bom, mas mesmo assim para mim a melhor plataforma de desenvolvimento web é o Ruby on Rails, nunca gostei de programar em um framework que esteja preso a apenas uma plataforma..
(e não me venha falar de Mono :P)
Oi, Puelo !
Sim, realmente bom acrescimo. Mas não exagere no "bem poderosos e rápidos", pois se fosse o caso teriam maior sucesso.
Uma pesquisa simples pode mostrar que pouca gente conhece esses bancos.
Se a questão de plataforma é tão importante assim... mas eu sugeriria fazer experiências para comparar e descobrir outros fatores que levarão você a escolher ora um ora outro conforme a importância da plataforma para o projeto.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Ah sim, estudei vários frameworks de desenvolvimento web. Vou citar um resumo breve das minhas conclusões (note que isso se aplica a mim e a empresa onde eu trabalho, outras pessoas podem ter outras conclusões obviamente):
PHP/Symphony: já programava php, então testei este framework primeiro. Infelizmente é muito instável e lento
Java/Struts/Hibernate: Extremamente burocrático de se usar, só a idéia de ter que escrever a classe, depois escrever um xml e depois criar os sqls do banco me faz tremer minha espinha dorsal.. é ridículo um framework ser burocrático o suficiente ao ponto de você precisar de plugins em IDEs para conseguir ser um pouco produtivo.
asp/.Net: Custos iniciais muito elevados. Adotar o .Net faria com que tivéssemos que comprar licenças Windows para todos os desenvolvedores, e obrigaríamos nossos clientes a comprarem servidores com Windows Server, e tudo isso encarece demais o produto final. Sem contar que o Visual Studio é bem caro também.. É muito custo para as vantagens que ele proporciona.
Ruby on Rails: multiplataforma, opensource, rápido, comunidade de desenvolvedores bem ativa, extremamente produtivo, e ainda por cima é bem agradável de programar. Active Record é uma coisa linda, me apaixonei por esse esquema de mapeamento objeto/relacional.
Python/Django: muito parecido com o Rails, mas com uma comunidade menor, e menos conhecido, alguns testes indicam que ele é mais rápido que o Rails.
Bom, para mim, assim como para muitos, a melhor escolha foi o Rails, e como eu tenho um certo poder de decisão na empresa onde eu trabalho, acabamos adotando o Rails para o Departamento Web.
Agora quanto aos SGBDOOs, eu não entendo muito bem porque não fizeram sucesso. Quando estudei eles na faculdade eu fiquei impressionado com o poder do OQL em relação ao SQL, também gostei muito da idéia de não precisar de um mapeamento objeto-relacional, pois o SGBDOO se encarrega de salvar objetos, não tuplas..
Bom, eu reparei no comportamento dos meus colegas quando estudamos esta matéria e eles reclamavam: "Para que aprender isso se já sabemos usar o relacional?" Eu fiquei bem triste ouvindo isso de universitários...
Oi, Puelo !
"asp/.Net: Custos iniciais muito elevados. Adotar o .Net faria com que tivéssemos que comprar licenças Windows para todos os desenvolvedores, e obrigaríamos nossos clientes a comprarem servidores com Windows Server, e tudo isso encarece demais o produto final. Sem contar que o Visual Studio é bem caro também.. É muito custo para as vantagens que ele proporciona."
Considero estranho o fato de que, pela sua descrição, vocês só atendem clientes com ambientes em software livre e não tem a menor intenção de ampliar isso...
Se a empresa em que você está é uma empresa de desenvolvimento de software, entre em Microsoft, na parte inferior do site clique em parceiros e analise os beneficios de registrar sua empresa como parceira (o que é gratuito). Além disso, observe a oferta do Action Pack, bem mais barato para aquisição do que o Visual Studio, nestas condições.
Em último caso poderia ter considerado um inicio com as versões Express.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Considero estranho o fato de que, pela sua descrição, vocês só atendem clientes com ambientes em software livre e não tem a menor intenção de ampliar isso..."
Não, a questão não é essa.
Em alguns sistemas web que vendemos, a empresa não tinha quase nenhuma informatização. Eles tiveram que comprar tudo, incluindo servidores, computadores clientes.
Agora, se tivessem que comprar um monte de licenças Windows, o custo ficaria muito mais elevado.
Cara, você tem que entender que as soluções da Microsoft, apesar de boas, não servem para tudo. E sempre podem haver opções melhores.
Acredito que no mundo de TI, não existem soluções definitivas. Cada tecnologia é boa em determinada situação. Existem muitos casos em que compensa muito mais usar um Linux, enquanto existem outros casos em que é muito mais compensatório usar o Windows.
E saber estas diferenças é crucial para um bom profissional de TI, pois esse é um conhecimento que vale dinheiro.
E é uma coisa que se aplica a tudo em TI, outro exemplo é o Java. Tem gente que quer usar Java para tudo, mas tem coisas em que o Java não é bom, e existem muitas outras alternativas melhores e mais eficientes.
Eu convido você a pegar um CD de Ubuntu, que é bem fácil de usar e fuçar um pouco nele, aprender como funciona, tirar suas próprias concluções a respeito, convido também a assistir algum screencast do Ruby on Rails.
http://www.rubyonrails.org/screencasts
Só quero lhe mostrar que existem coisas boas fora do mundo ms ;)
Oi, Puelo !
"Em alguns sistemas web que vendemos, a empresa não tinha quase nenhuma informatização. Eles tiveram que comprar tudo, incluindo servidores, computadores clientes."
Quando uma empresa compra máquinas, preocupa-se (ou deveria) com a legalização dos softwares. A maioria das máquinas no mercado vem com SO Windows OEM por uma diferença de preço não muito significativa.
Para o servidor, você poderia utilizar o SBS Standard, que não é nenhuma enormidade em custos, pode ser parcelado em 36x e vem com muita coisa que a empresa poderá utilizar.
E para que gastar esse dinheiro todo ?
Se a empresa estava tão mal informatizada, não seria apenas um sistema que iria salva-la do caos. A partir desta solução que indiquei você poderia instalar algum office gratuito - para começar - nas máquinas dos usuários, instrui-los a compartilhar arquivos na rede e com isso o trabalho da empresa se tornaria cada vez mais dinâmico, evoluindo consideravelmente. Com certeza você encontraria muitos processos dentro da empresa que seriam beneficiados pelos novos recursos tecnológicos.
Com a instalação dos sistemas "digratis", porém, você deixou um sistema web disponível para a empresa, no servidor, deixou os clients com browsers e de vez em quando deve dar uma geral nos servidores e clients. Será que os usuários que não estavam habituados a utilizar computadores conseguiram conviver bem com alguma versão "digratis" de SO ? Será que a empresa teve oportunidade de crescer tanto quanto poderia com outros softwares ? Será que, como consequencia, o "digratis" não acabou saindo caro demais sem que a empresa nem ao menos saiba disso, pela falta do conhecimento técnico ?
A escolha da solução ideal para cada caso, não apenas de um fabricante ou outro, mas a que atenda a necessidade da empresa, é algo crítico e que infelizmente a própria empresa não consegue notar quando a escolha errada é feita. Porém com a escolha certa, tanto o cliente cresce como você ganha um volume maior de serviços.
Quanto ao RoR, já conversei pessoalmente com desenvolvedores RoR e já pesquisei bastante sobre ele, sei muito do que ele tem e do que não tem, por isso sei dos benefícios das soluções que utilizo.
Update : Só para não criar confusão, é bom esclarecer : não estou dizendo que as soluções Microsoft servem para todos os casos, definitivamente não é verdade. Mas existem casos nos quais a primeira vista poderia-se pensar em economia mas que uma análise mais detalhada poderia trazer muitas outras oportunidades de crescimento para o cliente.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Putz, não dá para argumentar com você cara, na sua cabeça os produtos da Microsoft são inquestionáveis e acima de tudo.
1) O caso que citei é um hospital, as recepcionistas não precisam de um Windows Vista Premium com interface Aero e um Office 2007 Professional se elas vão usar só o sistema web da nossa empresa e um outro sistema da unimed que também é web.
2) Nem todas as máquinas são Windows. Nas máquinas da administração obviamente eles já tinham computadores, office e afins, então o sistema roda perfeitamente lá também.
3) Não é uma questão de preço, é uma questão de qualidade e flexibilidade. Para mim é muito mais fácil manter um servidor Linux do que um servidor Windows. Sem contar que eu não coloco minha mão no fogo pelo IIS JAMAIS!
O problema da MS é justamente este, se você trabalha com os frameworks deles, você fica CEGO para todo o resto do mundo de tecnologia, como aparentemente é o seu caso.
Isso mesmo.. Muitos ficam cegos.. Conheço uns 3 que simplesmente não querem saber de outras soluções.. bom.. temos taxistas que sabem cobol hoje em dia..
Oi, Puelo !
Você tem certeza que leu o update do post acima ?
"1) O caso que citei é um hospital, as recepcionistas não precisam de um Windows Vista Premium com interface Aero e um Office 2007 Professional se elas vão usar só o sistema web da nossa empresa e um outro sistema da unimed que também é web."
Primeiramente, quem está falando de soluções de ponta e em tom de deboche é você.
Recepcionista de hospital ?
Toda recepcionista, de qualquer tipo de empresa, sempre lida com imprevistos. Ela está ali, no dia a dia da empresa e o dia a dia da empresa nunca é sempre igual.
Você acredita mesmo que a recepcionista consegue resolver todos os problemas do dia-a-dia só com esses dois sistemas ?
Se for verdade, você pode até estar certo em dispensar muitos recursos, mas não creio que isso ocorra não. Ela deve estar toda enrolada com papeis de recado neste momento, sem falar em outros recursos que poderia ter e não tem.
"Para mim é muito mais fácil manter um servidor Linux do que um servidor Windows"
Você faz uma solução pensando em você ou pensando na empresa que você irá atender ?
Quando uma empresa me pede um serviço e identifico a necessidade de um servidor Linux, encaminho a outro profissional.
"Sem contar que eu não coloco minha mão no fogo pelo IIS JAMAIS!"
Quem está cego ?
O IIS versão 6.0 foi lançado no ano 2003, portanto há 4, quase 5 anos atrás. Em todo este tempo, o IIS 6 teve (da última vez que conferi, e foi ha pouco tempo) apenas uma falha crítica em todo esse período. Uma, em 5 anos. Já experimentou olhar a página de registros de bugs de um redHat, por exemplo?
Eu conheço o que uso e me informo sobre os demais, você deveria fazer isso também.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
""Sem contar que eu não coloco minha mão no fogo pelo IIS JAMAIS!"
Quem está cego ?"
Bom, digamos que quando você disse "versão "digratis" de SO ?" em tom de deboche e sem nem mesmo conhecer o sistema que foi instalado lá, você perdeu toda a consideração comigo, pois faltou com respeito comigo, criticando decisões técnicas de uma equipe sem mesmo conhecer detalhes a respeito.
Até então você tinha sido racional, então a partir do ponto que você deixou de o ser, para agir como fanboy puxa-saco, perdeu o sentido eu continuar tentando manter uma conversa de bom nível entre desenvolvedores.
E o sistema já está em uso já a 6 meses e supre todas as necessidades dos usuários específicos. Lembrando que por política da própria clínica alguns funcionários só tem acesso a esses dois sistemas, pois suas funções no computador são limitadas a isto.
Não é por nada não, mas você não é graduado não é? Para se especializar e estudar apenas uma coisa e desmerecer todo o resto sem nem saber direito como é este "resto".
Acho que deviam criar um termo novo, assim como existem os stallmanzinhos, podemos começar a classificar pessoas como ballmerzinhos...
Putz, não dá para argumentar com você cara, na sua cabeça os produtos da Microsoft são inquestionáveis e acima de tudo.
Muitas horas assistindo "GET THE FACTS".
Eu convido você a pegar um CD de Ubuntu, que é bem fácil de usar e fuçar um pouco nele, aprender como funciona, tirar suas próprias conclusões a respeito
Eu já disse isso a ele, mais parece que a premissa anterior não deixa.
Mudando um pouco de assunto, um antigo mentor meu (que trabalho a vida inteira com Windows, e até na Microsoft) me disse uma vez, "É necessário tomar cuidado na hora de implementar soluções administrativas, ainda mais com tecnologia Microsotf, já reparou que as propagandas são sempre no estilo: Vou resolver um problema que ninguém possui? " .... É e por isso ele foi demitido hehehe...
"Só para não criar confusão, é bom esclarecer : não estou dizendo que as soluções Microsoft servem para todos os casos"
Não mesmo? Não é o que parece.
Bom, vou encerrar a discussão aqui.
Não vale a pena dar soco em ponta de faca. Bom, não por muito tempo pelo menos...
Bela propaganda...
Tem o Visual Express que é di grátis (mas é limitado). E outras opções, como o NetBeans, que merecem uma resenha tão detalhada como esta.
Oi, Paulim !
Tudo que eu falei para o Visual Studio vale para as versões Express. De fato o lançamento está sendo em conjunto e as versões Express do 2008 já estão disponíveis para download. Se achar interessante ter mais alguma informação específica sobre o Express, me avise, posso acrescentar, mas o link e o fato de ser de graça está bem destacado ali no final...
O produto foi lançado na madrugada de ontem para hoje e o artigo do MeioBit saiu antes mesmo que a newsletter do MSDN (que acabou de chegar para mim)... é muito tênue a linha que separa uma notícia de uma propaganda, mas propagandas pagas aqui no MeioBit são devidamente marcadas como tais...
Quanto ao NetBeans, não conheço (só de nome), mas se desejar escrever sobre ele, pode ser legal...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Ok!
Dennes..será que você pode explicar porque o Vs 2008 só funciona no Xp ou Vista? Eu pobre usuário do windows 2000 vou ficar chupando o dedo?
Em casa eu tenho Vista Starter edition e vou poder ver o novo VS ..mas no trabalho só se eu convencer o meu chefe a solicitar o update do SO da minha máquina..(algo que não será uma tarefa fácil)
Oi, Rodrigo !
As versões mais atuais do framework passaram a exigir XP SP2 para cima. Se pensarmos muito, podemos até inventar um motivo - XP SP 2 e Windows Server 2003 marcam a mudança de nível de segurança no ambiente Microsoft. Mas não que eu ache isso muito legal...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Provavelmente pra forçar uma atualização do seu SO...
Acredito de isso ser um dos motivos além do fato do windows 2000 não ter proteção contra a pirataria (sempre passa como válido).
É sempre assim!!! Nem tem como ser outra coisa.
Não vejo muita vantagem em usar um framework para gravar dados de um objeto (no caso, Java) na base de dados. Porquê aqui é só eu criar uma classe "dao" com um método "ler", um "gravar" e um "apagar" e está resolvido o negócio hehe. Aí uso os meus dados como objetos (uma "entidade") e quando quero gravar os dados, chamo a "dao" e uso o método "gravar" passando o objeto como parâmetro. Para quê complicar mais do que isso?
Oi, DarkMaster !
Vai devagar, assim você me assusta ! Tá fazendo 'mó solzão aqui e de repente você coloca uma mensagem avisando que vai cair pé d'agua....
Porque só pode ser isso, previsão de um pé d'agua, a primeira vez que vejo uma mensagem sua concordar comigo em alguma coisa !!
Valeu !
:)
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Eu procuro o que funciona, não o que "está na moda". =P Assim como detesto o .NET por engordar a aplicação de forma desnecessária também detesto qualquer coisa equivalente no mundo Java/Linux/etc que faça o mesmo (acrescentar complexidade sem acrescentar ganhos)
A grande vantagem do Hibernate (que mapeia objeto x relacional) é o simples fato de minimizar o esforço em ter que escrever SQL no código Java para fazer SELECT, INSERT, UPDATE e DELETE.
Com o Hibernate vc ainda conta com "encapsulamento de tabelas parentes", ou seja, se vc tem a tabela USUARIOS (campos: id, nome, ativo) e a tabela CLIENTES (campos: id, id_usuario, endereco, cep, etc.) onde USUARIOS.id = CLIENTES.id_usuario, no Hibernate vc simplesmente acessa como objClientes.usuarios.nome ao invés de ter que escrever um SQL utilizando Join.
Agora imagine essa situação onde vc parte de uma tabela e precisa de um dado de outra tabela que é o 5º nível de relacionamento da primeira?!
Em situações simples, nem vale a pena a adoção do Hibernate, mas em outras (sistemas mais complexos) o Hibernate agiliza muito o desenvolvimento, além de tornar muito simples o ato de ler (SELECT) dados com dezenas de joins.
Eu sou um "cientista louco/desenvolvedor mão-na-massa/harcore", se eu precisasse de algo no estilo do hibernate eu fazia o meu :)
P.S: Olha, se eu tivesse uma tabela que precisasse de informações de uma tabela que é o 5º nível de relacionamento da primeira, seria sinal de que a minha estrutura de dados está furada. Eu não preciso de "joins insanos" porquê faço tudo que der para não precisar usá-los hehe.
Eu não preciso de "joins insanos" porquê faço tudo que der para não precisar usá-los hehe.
Hehehehehe!
Já ouviu falar em POG?
POG é uma das forças do universo =P (e que funcionam)
"Não vejo muita vantagem em usar um framework para gravar dados de um objeto (no caso, Java) na base de dados. Porquê aqui é só eu criar uma classe "dao" com um método "ler", um "gravar" e um "apagar" e está resolvido o negócio hehe. Aí uso os meus dados como objetos (uma "entidade") e quando quero gravar os dados, chamo a "dao" e uso o método "gravar" passando o objeto como parâmetro. Para quê complicar mais do que isso?"
Cada caso é um caso.
Se você está falando de uma pequena aplicação de poucos usuários (como um cadastro simples com poucas tabelas por exemplo, e talvez uma opção de emitir relatórios simples), então concordo: usar Hibernate é overkill, o DAO dá conta do recado tranquilamente. Nesses casos eu só recomendo o uso de algum pool de conexões (se estiver usando um container JEE o do próprio container, ou então algum externo) para evitar ter que fazer o controle na mão.
MAS... Se você estiver falando por exemplo de tabelas que vão ser muito acessadas e/ou sistemas com muitos usuários, entre outros cenários, daí o Hibernate vai te trazer muito ganho sim, porque a) ele vai gerenciar para você um cache de objetos que vai tornar as consultas e relatórios muito mais rápidos do que se você estivesse massacrando o SGBD com selects por todos os lados; e b) ele vai usar estratégias de lazy write e lazy load, otimizando ao máximo o acesso ao SGBD. Além, claro, de adicionar uma camada de abstração (HQL) que torna as consultas portáveis entre SGBD's (embora eu particularmente ache essa uma vantagem muito questionável: no mundo real é mais fácil um SGBD ser mantido e uma aplicação ser reescrita usando outra tecnologia do que o contrário).
---
Tecnologia deve ser o meio, não o fim.
Eu sou um fiel seguidor da filosofia K.I.S.S. Nunca vou acrescentar complexidade se o ganho não for muito, mas muito bom à ponto de justificar uma aplicação mais complexa do ponto de vista do código. Quanto à "tamanho" da aplicação, a aplicação para a qual eu dou manutenção (e que usa o método de "daos" que eu descrevi anteriormente) dá conta de atender o Paraná inteiro, precisa mais?
P.S: Ele usa um "pool" de conexões com a base de dados, mas é outra coisa "feita na raça" hehe. E funciona bem.
Oi, Carlos !
A grande questão sobre usar o Hibernate ou não está justamente na questão de performance, porque para dar uma visão de objetos o Hibernate faz bastante processamento, consumindo performance. Uma preocupação, por exemplo, é a chegada de instruções SQL inesperadas na base, auto-geradas pelo Hibernate e não adequadamente otimizadas.
Com isso - e estamos falando de uma suposição, pois que eu saiba não existe prova a favor ou contra - as vantagens de performance que você citou não estariam gerando ganho, mas sim evitando a geração de um prejuizo.
Mas se você puder comentar mais sobre o Lazy Write, se isso não for complexo demais no Hibernate, gostaria de conhecer alguns detalhes a mais, já que isso me despertou imediatamente o aviso de que seria perigoso, afinal o banco já tem todo um sistema de integridade para garantir que, se faltar luz, as transações estão íntegras...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Gostei, esse dennes parece menos fanboy nos comentários hj.
Interessante, é bom ver matérias no meiobit de ambos os lados.. Só estou esperando a resposta para:
"Eu convido você a pegar um CD de Ubuntu, que é bem fácil de usar e fuçar um pouco nele, aprender como funciona, tirar suas próprias concluções a respeito, convido também a assistir algum screencast do Ruby on Rails.
http://www.rubyonrails.org/screencasts
Só quero lhe mostrar que existem coisas boas fora do mundo ms ;)" haha
Esquece, parece que o cara se especializou tanto em .Net e demais ferramentas da plataforma Windows, que não consegue ser flexível o suficiente para mexer com outras tecnologias, ou, ao que parece, sequer admitir que outras plataformas também podem ser boas.
Acho os artigos do Dennes muito bons, ele está de parabéns. Ele até parece realmente fanboy da M$, mas foi a decisão profissional dele se profissionalizar em desenvolvimento na plataforma MS. Assim como quem se profissionalizou em Java, e bloga, vai blogar sempre sobre Java. Cada macaco no seu galho, gente...e cada um com sua banana.
Visit my blog -> www.leandrofiore.eti.br
Oi, lFiore !
Em minha opinião, existem 2 tipos de fanboys : Aqueles que defendem a tecnologia com que trabalham, mas o fazem com argumentos técnicos para isso e estão prontos a conversar tecnicamente e estudar outras tecnologias para compara-las; e aqueles que, lamentavelmente, fecham os olhos para tudo em volta, até porque nos tempos atuais, conhecer várias tecnologias profundamente (destaque no profundamente) é algo impossível...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Eu adoro C#,
acompanho as novidades do C#3, linq, e asp.net
mas tá cada dia mais difícil aprender tudo
a curva de aprendizado tá cada vez maior
não que eu ache isso ruim, mas acaba que o .NET vai ficando que nem o java, é melhor o uso em grandes empresas,
por que para coisas mais simples, não compensa usar tudo isso
Eu trabalho mais com pequenos programas. Eu faço sozinho desde o design da aplicação até o banco de dados.
Então eu quero saber se vai compensar começar estudar isso tudo. E também fico preocupado quanto a fazer um sistema multiplataforma, já que o linux está a cada dia mais difundido.
Oi, a13X !
Compensar profissionalmente compensa, pode ter certeza. Dou todo o apoio para avançar nos estudos.
Mas o que você disse é uma grande verdade : As coisas estão ficando cada vez mais complexas e fica cada vez mais dificil aprender isso.
A consequencia, como você identificou, é que muitos vão preferir usar outras tecnologias, as vezes não tão boas tecnicamente, mas porque a curva de aprendizagem vai justificar. Quando este ponto chegar, estaremos entrando em uma curva de retrocesso tecnológico : A tecnologia muito boa existe (estou falando genericamente!), mas estará tão complicada de se aprender que será pouco utilizada.
Não gosto da idéia de ficar andando em círculos. Outras áreas sociais deveriam se reunir na solução deste problema.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Programação orgânica?
Dennes, existe suporte a desenvolvimento usando RUP no VS2008?
Oi, Aw !
Bem, sou mais de MSF do que de RUP, então me corrija se eu disser algo errado.
RUP tem mais ligação com organização de projeto do que com o desenvolvimento do software em si. Perguntar sobre UML, por exemplo, seria algo mais natural do que perguntar sobre RUP, já que RUP são metodologias de projeto, processos.
Então, de inicio, achei importante explicar como o que você está perguntando seria algo incomum, nada trivial.
Mas quando a Microsoft lançou o Visual Studio ela lançou também o Team Foundation Server e a edição Team System do Visual Studio, que fornece as maiores vantagens quando interligada com o Team Foundation Server.
O TFS não é minha especialidade, portanto a descrição que farei a seguir é ilustrativa, os recursos existem mas existirão pequenas variações na forma de aplicação, ok ?
O gerente de projetos resolve iniciar um projeto. Ao iniciar um novo projeto - uma solução para um problema - o gerente especifica qual metodologia de projeto ele desejará utilizar : MSF, MSF Agile, enfim uma metodologia de projeto. Se o gerente de projetos desejar, ele pode personalizar as características da metodologia de projeto, inclusive definindo as características do RUP. Acredito que junto aos especialistas nesta área já existe configuração específica do TFS para o RUP, assim como existem configurações específicas de metodologias de projeto para permitirem a empresa atingir o CMMI.
Escolhida a metodologia, o projeto é registrado no TFS, um servidor de projetos na empresa. O próximo passo do trabalho então pertence ao gerente de infraestrutura.
O gerente de infraestrutura precisa fazer o desenho da rede da empresa, dentro do Visual Studio. Neste desenho o gerente de TI especifica os servidores existentes na empresa, os recursos de hardware disponíveis em cada um e as restrições existentes em cada um devido a políticas da empresa, tal como política de segurança. Feito o desenho, este é armazenado no TFS.
Chega então a vez do arquiteto de software. O arquiteto de software faz o desenho da arquitetura da aplicação definindo cada uma de seus partes, client, webServices, sites, banco de dados, enfim, como tais partes vão se interligar. Mais uma vez o desenho é armazenado no TFS.
Chega então a hora de juntar os dois desenhos. Gerente de TI e arquiteto de software sentam-se lado a lado e pedem ao Visual Studio para iniciar o desenho de deployment. O arquiteto de software tenta então encaixar os pedaços de sua aplicação nos servidores disponibilizados pela empresa e atendendo as políticas da empresa (isso é feito com drag-and-drop). O visual studio valida o deployment e aponta quando um pedaço da aplicação não estiver adequado ao servidor no qual planeja-se coloca-lo.
O gerente de TI e o arquiteto de software resolvem os desencontros amigavelmente (!) como é de se esperar, chegando enfim a um acordo sobre o diagrama de deployment.
Tendo chegado ao acordo, o arquiteto de software clica com o botão direito sobre o diagrama de deployment e pede ao visual studio para gerar a solução. O VS gera toda a estrutura da solução, com seus devidos projetos e referências entre os projetos conforme o desenho do arquiteto.
Você pode ver um passo a passo da montagem destes diagramas em montagem dos diagramas.
Feito tudo isso, a estrutura da solução e os diagramas são armazenados no TFS. O trabalho volta ao gerente de projeto.
O gerente de projeto começa então a especificar tarefas necessárias ao projeto, de acordo com um cronograma. Distribui estas tarefas para os desenvolvedores disponíveis. Antes da distribuição, porém, reforça os passos da metodologia escolhida, que pode ser a RUP, através de personalizações possíveis. O gerente pode determinar tudo, desde a sequencia de trabalho até a forma de escrever um if.
Os desenvolvedores recebem estas tarefas através do próprio Visual Studio. Para começar a escrever algo o desenvolvedor precisa indicar qual tarefa está iniciando. Ao fazer isso o TFS registra "Zezinho começou a tarefa x na hora z".
A cada compilação que o Zezinho faz, o TFS registra "Zezinho compilou a tarefa x na hora z+1 e resultou em y bugs". Por fim, quando o Zezinho houver terminado, sobe o código para o TFS, o que marca a tarefa como encerrada.
Esse acompanhamento permite ao gerente utilizar as ferramentas agregadas ao TFS (Sharepoint e Reporting Services) para identificar não só o andamento atual do projeto mas o índice de produtividade de cada desenvolvedor, bem como suas formas de trabalhar, identificando rapidamente um problema, como um desenvolvedor com uso excessivo de messenger, por exemplo.
Voltando ao Zezinho, se o gerente determinou que antes de subir o código para o TFS o Zezinho precisa fazer um teste, então se o Zezinho esquecer do teste o Visual Studio irá avisar que as regras da metodologia em uso exigem que o teste seja feito. O Zezinho, então, clica com o botão direito na classe que criou e pede para o próprio Visual Studio fazer a geração automática do teste, tendo apenas o trabalho de indicar a seguir quais os valores válidos de resultado. Veja um exemplo no mesmo artigo : Artigo com exemplo de teste.
Observe ainda que o gerente tem flexibilidade suficiente para determinar, por exemplo, que o teste precisa ser feito no inicio do desenvolvimento e não só no final, de acordo com a TDD (Test-Driven Development).
Se o programador, ao receber o aviso de que algo não está de acordo com as regras da metodologia, como por exemplo a forma como escreveu o IF, ele resolver ignorar o aviso, o VS até deixa, mas envia um e-mail para o gerente e para o RH avisando "Zezinho escreveu o IF errado..."
Eu não conhecia nenhuma ferramenta de controle de projetos com essa capacidade até ser apresentado ao VSTS com TFS. Sei que existem outras, já ouvi falar, como também já ouvi falar que são muito mais caras.
Observe ainda que estes são recursos para projeto e gerencia de projeto, não trata-se de uma ferramenta case. Para case, a IBM tem o Rose e a Borland tem um que esqueci o nome agora, mas ambos são simplesmente fantásticos e possuem uma enorme integração com o Visual Studio.
Há anos atrás em um TechEd, assisti uma apresentação da ferramenta case da IBM. A demonstração foi feita com o jogo campo minado do windows - com código fonte aberto e escrito em .NET.
O palestrante desejava implementar uma funcionalidade de undo nas jogadas, mas não conhecia nada sobre como funcionava o código.
Resumindo : O palestrante rodou a aplicação e a ferramenta case criou um detalhadissimo diagrama de sequencia a nível físico que permitiu o palestrante identificar exatamente em qual ponto e qual objeto deveria manipular para implementar o undo. Como isso envolvia, porém, um design pattern, o palestrante abriu uma biblioteca de patterns pré-implementados, escolheu o que ele desejava, jogou sobre o diagrama de sequencia e pronto, estava feito.
A única coisa que o palestrante codificou foi o reconhecimento da tecla CTRL+Z para fazer o undo.
Lembrando : Isso foi a anos atrás.
Por fim : As novidades definitivamente confirmadas no VS 2008 nesta área são :
- Uma edição especial de teste, test load agent
- Recursos de testes abertos para a versão professional
- Edição para database developers mais interligada com as demais
É uma incógnita o volume de melhorias no VSTS e TFS.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Gente, tenta convertar um desenvolvedor Java a programar a PHP ou .NET para ver como vão ser xingados.
Visit my blog -> www.leandrofiore.eti.br
Ah! Não generalize. Atualmente trabalho com Java 99% do tempo, mas recentemente fiz um pequeno site usando PHP + MySQL e nem passou por perto a idéia de adotar Java + Hibernate. ;)
Já trabalhei com VB 6 e ASP, depois mudei pra Java, por causa da multiplataforma, já que trabalho com desenvolvimento de sistemas onde o target são máquinas UNIX.
Trabalhava com VB6, agora trabalho com Java e já testei o .NET. Mas não gostei do .NET porquê é como "matar uma barata com uma bazuca". Usa memória demais (e é lerdo como o diabo se comparar com uma aplicação equivalente em VB6, nem tente comparar com uma equivalente em C porquê seria uma humilhação), além de que eu considero estúpido fazer uma VM quando só se vai rodar o negócio em uma plataforma (Windows).
Oi, DarkMaster !
Neste endereço Videos você encontra um vídeo que ajudará a entender melhor muitos desses conceitos.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Rindo até agora: "matar uma barata com uma bazuca"
"Eu sou um "cientista louco/desenvolvedor mão-na-massa/harcore", se eu precisasse de algo no estilo do hibernate eu fazia o meu :)"
Eu também sou assim cara, to fazendo meu próprio MVC(Rails) aqui com PHP, um sistema de marmoraria tem muita conta e pouco Banco de Dados(por isso faço o próprio framework)o negócio tá ficando tão bom que estou implementando AJAX como um desenhista(já pintei uns quadros), é o seguinte:
* Se o JavaScript não existir a aplicação funciona sem o Ajax(isso é díficil de fazer e não venham me dizer que é fácil que não é não!)
* O visual da aplicação está melhor que o MAC OS X, é sério, XHTML e CSS rápidos e bonitos
* O sistema vai rodar em celulares que tenha um browser fuleragem qualquer, isso é útil, pois o sistema é de marmoraria e vendedores podem calcular o custo de um pedido com muita facilidade
* o sistema roda até no links(é paranoia isso)
* Vou implementar um Web Service e fazer uma versão Desktop em 2 horas
Eu vi uns vídeos sobre ASP.NET AJAX e não gostei, eles querem transformar aplicações WEB em aplicações Desktop, eu preferia fazer um Web Service e então fazer a versão Desktop, pois ao meu ver, o melhor de WebApps é rodar em portáteis com muito mais facilidade.
"Em minha opinião, existem 2 tipos de fanboys : Aqueles que defendem a tecnologia com que trabalham, mas o fazem com argumentos técnicos para isso e estão prontos a conversar tecnicamente e estudar outras tecnologias para compara-las; e aqueles que, lamentavelmente, fecham os olhos para tudo em volta, até porque nos tempos atuais, conhecer várias tecnologias profundamente (destaque no profundamente) é algo impossível..."
E vc é o tipo que faz isso com argumentos técnicos? Fala sério!
Pois eu assumo que faço isso com argumentos de fanboy!!!
Oi, NewUser !
Apesar do absurdo que falou sobre mim, vou te ajudar :
"Eu vi uns vídeos sobre ASP.NET AJAX e não gostei, eles querem transformar aplicações WEB em aplicações Desktop, eu preferia fazer um Web Service e então fazer a versão Desktop, pois ao meu ver, o melhor de WebApps é rodar em portáteis com muito mais facilidade."
Você viu os vídeos errados. Existem várias e várias formas de lidar com o ASP.NET Ajax, isso que você deseja é perfeitamente viável.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Parabéns Dennes,
Muito bom o artigo, quanto mais se tratando de coisa nova o trabalho em se escrever é muito maior, obrigado por compartilhar o seu estudo assim.
Pena que sempre role comentários fora do que é abordado no artigo. O artigo fala sobre Visual Studio ai sempre pinta alguém dizendo que é propaganda.. que tem XYZ que é melhor..afinal pq essas pessoas então não escrevem um artigo sobre XYZ...ao invés de criticar artigos dos outros?
Discutir sobre Microsoft versus XYZ é igual a discutir religião, política e etc.
Mas.. como eu adoro falar sobre religião e política.. vou dar minha opinião...rs
Na minha visão o mercado hoje é Microsoft ou Java. Ambas plataformas "resolvem tudo".
Agora se é de forma melhor ou mais rápida?.. bem claro que não. Claro que existem outras soluções, às vezes melhores mas ao meu ver para um profissional se especializar em uma tecnologia não tem como ficar trocando de plataforma a todo o momento.
Nem preciso dizer a velocidade em que a tecnologia avança, acompanhar já é complicado quanto mais ficar trocando.
Então eu analiso a postura da empresa, a Microsoft investe muito em tecnologia e no momento tem lançado diversos produtos. Então me dedicando a essa plataforma hoje posso fazer sistemas para windows, web, Mobile e até sistemas embarcados. Sim fico preso ao mundinho Microsoft, mas tenho uma gama de soluções presentes em uma empresa sólida. Se amanhã ou depois eu reparar que a empresa em si não está mais investindo pesado em tecnologia... não está lançando novas ferramentas ai sim.. pensaria em mudar de plataforma e ver a tendência do mercado. Digo o mesmo para o JAVA.
Agora sair adotando outras plataformas ao meu ver é arriscado, pois se gasta muito para aprender uma tecnologia nova e vc não tem a garantia de que ela será continuada. Além de ser mais difícil conseguir mão de obra para tecnologias pouco usadas no mercado.
[]'s
Renato Mattos
Oi, Renato !
Valeu pelo comentário, muito obrigado !
Vejo você dia 28 no evento !
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Nem vou comentar, não conheço o Visual Studio. Mas aqui vai uma sugestão pra quem só conhece o mundo MS: Pelo menos leiam 30min sobre outros frameworks (Django, Zope, Rails...) e outras linguagens (Python, Ruby, Lua...) na hora de defender algo com unhas e dentes. Entender outros modelos de desenvolvimento e suas licenças (GPL, BSD, MIT, Apache...) também pode ser útil. Porque nem sempre somente um empresa domina um nicho bem interessante (Web, BD, Soluções Embarcadas...).
Pra descontrair um pouco:
davidkwast.blogspot.com
Cara, adorei os três vídeo.. muito bom.. ainda estou nos 30min do terceiro, mais estou adorando.. valeu mesmo :) Deu até vontade de estudar Django....
Valeu :)
O site pode ajudar mais: http://www.djangoproject.com/
Python: python.org
davidkwast.blogspot.com
Interessante este artigo ...
Uma pessoa procura assunto de ponta pra que os outros se informem e é sabatinado dessa forma.
A questão não é Microsoft ou Java ou Linux ou PHP ou Python ou mesmo o novo AIR.
Acho que cada plataforma se o profissional estiver bem especializado vai conseguir fazer um bom trabalho.
Concordo com alguém que disse sobre a "bazuca". Cada caso é um caso no nosso cliente. Você não vai querer vender uma ferrari pro cara andar na praia, vai? Por isso mesmo os comentários, nada dedicado ao assunto do post e sim defendendo a bandeira de "studios", não tem tanta relevância.
Cada cliente tem uma realidade.
Se um hospital atende uma aplicação em linux. Bom pra eles.
O Unibanco por exemplo... existem milhões de aplicações sendo usadas de diversas plataformas... de .NET a Cobol.
Exemplos de Clientes/Plataformas que produzi.
- Unibanco - .NET
- TIM - Flash (AS3) + MSSQL
- British Council - ASP + MySQL
- Fundação Oswaldo Cruz - PHP (exigência de ser open source)
Realmente confirmo que é impossível estar atualizado nas maiorias das tecnologias. Ainda estou no MSSQL 2000 .. já está vindo o 2008 e nem peguei o 2005.
Mas além do tipo de cliente, vai também do tipo de profissional. A limitação de serviços que ele pode oferecer.
Por necessidade e oportunidades além da programação e do banco de dados ... tive que cair pro lado do Visual(Adobe) ... Flash, Photoshop, Premiere e After Effects.
E olhando esta matéria estarei vendo o quanto antes o Expression Blend. Pelo que vi... pode ser um bom concorrente ao Flash. E mais uma opção para oferecer aos clientes.
Abraços a todos.
Anderson Fernandes
Oi, Anderson !
Muito legal seu comentário !
Dê uma olhada na matéria sobre designers, tem um link para ela no artigo...
Se você for de SP, dia 24 vou fazer uma apresentação na Uninove de Vila Maria, demonstrarei o Expression Web e o VS 2008.
Se for do Rio, dia 28 farei uma demonstração na UFF, em Niterói.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
OFF Topic:
Queria saber um coisa se vocês, tenho 25 anos, ainda não tenho curso superior e trabalho como técnico de suporte de Windows e administrador de domínio Windows Server.
Pergunta:
Qual o melhor caminho pra sair de infra-estrutura e ir para desenvolvimento no meu caso ? Sendo que eu já fiz duas cadeiras com Java no meu curso de telecomunicações.
--------------------------------------------------------------
"Do que adianta saber fotografia se não tem nada bonito pra fotografar ?"
Oi, Nobet!
O grande problema de fazer isso hoje seria justamente a parte de lógica de programação e conhecimentos básicos de desenvolvimento de software.
Mas se você se garante, se as duas cadeiras de Java lhe deram pelo menos a lógica de programação, então você pode partir para treinamentos técnicos no mercado.
Posso falar sobre treinamentos Microsoft : A rápida evolução do framework .NET criou problemas para as empresas de treinamento. É muito difícil as empresas de treinamento se manterem atualizadas com relação a programas de curso e quadro de treinamentos oferecidos. Então, especialmente nas empresas de treinamentos oficiais, encontramos "fases" pelas quais a empresa passa e que você deve identificar e fugir :
Fase 1) A empresa ainda está presa ao Framework 1.1, cujo quadro de treinamentos é mais completo. Neste caso fuja por completo. Boa parte dos treinamentos não é mais válido e os que ainda são válidos apenas são parcialmente.
Fase 2) A empresa evoluiu e passou a aplicar workshops do framework 2.0 . Os workshops são fracos em termos de método de ensino e conteúdo, já recebi inúmeros alunos comentando terem experimentado e não terem conseguido aprender nada. A menos que você se garanta muito, fuja.
Fase 3-futura) A estrutura dos treinamentos de .NET 2.0 passam por uma remodelagem tendo em vista o não funcionamento dos workshops. Isso é ótimo como evolução. Mas o treinamento ficará grande e será difícil convencer o mercado da necessidade de faze-lo por completo.
Alias, convencer o mercado em relação a treinamentos é outro problema. O mercado, com amplo acesso a internet, pegou o hábito do auto-didatismo. Com as atuais tecnologias, é muito, muito difícil o auto-didatismo funcionar. Em cada parte, em cada canto, existem pequenos truques que só poderiam ser claramente passados em sala de aula, são mínimas as pessoas que conseguem captar isso sem um treinamento, mas tem que ser um treinamento decente, um treinamento chinfrim qualquer é exatamente o tipo de treinamento que leva o mercado a achar que treinamento e auto-didatismo da no mesmo.
Fase 4 - futura) Os treinamentos de .NET 3.0 e 3.5 serão incluidos no curriculo
A grande maioria, senão todas as empresas de treinamento oficial ainda encontram-se na fase 2, o que não é nada bom.
Um critério fundamental para escolher o treinamento é o instrutor. Pesquise sobre o instrutor. Os melhores estão envolvidos com comunidades de usuários e realização de eventos e por causa disso será fácil encontrar informações sobre eles na internet. No momento atual, é o instrutor que fará não apenas muita, mas toda a diferença.
Gostaria de poder perguntar a você sua localização no país e indicar uma empresa de treinamento realmente boa. Mas infelizmente não posso - e todo mundo vai achar que sou metido, estou fazendo jabá e as duas coisas juntas - pois não conheço nenhuma empresa de treinamento que mantenha treinamentos personalizados com uma qualidade alta como mantenho na BufaloInfo.
Posso indicar pequenos caminhos e alguns locais melhor favorecidos especialmente em termos de instrutores :
Rio : Já citei, é sua salvação ;-)
São Paulo : Existem muitos instrutores de qualidade que se reuniram em torno de uma empresa de treinamentos não oficiais. Porém o programa de curso dos treinamentos não tem grande qualidade...
Goiania : O devGoias inicia agora um plano para treinamentos de infraestrutura. Não estou informado quanto a treinamentos de desenvolvimento.
Salvador : O Mutex uma vez ou outra realiza treinamentos. Consulte-os
Recife : Sua salvação é a I9. Os criadores da I9 são profissionais pioneirissimos nesta área e com capacidade de aplicar treinamentos fantásticos. Não tenho detalhes sobre como a empresa está hoje.
Obs : RJ,SP,GO,BA e PE - Você poderia conhecer todos de qualquer destas regiões no TechEd de dezembro - estarão todos presentes.
Outro caminho : Crie uma célula acadêmica séria para estudar a tecnologia em sua faculdade e me convide como orientador. É um caminho bem mais lento, claro, mas também funciona.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
vc está louco?! Todo mundo precisa de suporte, de infraestrutura e pessoal competente é bem-pago por isso. Desenvolvimento de software, apesar de todo o sex-appeal, é um beco sem saída.
Desenvolvimento de software hoje não é mais sentar em frente a uma ferramenta de programação com todas as especificações prontas e inventar algoritmos mirabolantes, não! Desenvolvimento de software é passar horas a fio com um usuário rabugento tentando entender o que ele quer, depois converter isso em um monte de caixinhas e setinhas UML e por fim passar essa zorra para algum macaco treinado em geradores de código pasteurizados ficar montando interfaces gráficas e fazendo a ligação com o BDs. E depois ainda levar uma dura que está fora do prazo e não correspondendo às expectativas! nenhum charme, só trabalho mecânico e não-criativo...
sugiro fortemente que vc continue no suporte...
Oi, Nemesis !
Não é assim não. Quer dizer, é quase assim, mas as avaliações não são assim.
Quem vai ao usuário identificar as necessidades do usuário é um analista de sistemas e não um desenvolvedor. O analista de sistemas monta os diagramas em UML para atender a necessidade do cliente. Alguns desenvolvedores acham isso chato, mas os verdadeiros analistas de sistemas adoram identificar problemas nos processos das empresas, poder fazer com que a empresa atinja o seu potencial máximo, isso é criatividade.
Os desenvolvedores a quem o analista de sistemas passa as tarefas para execução realmente usam ferramentas automatizadas e muito pouco em criatividade. Mas em geral o desenvolvedor neste cargo é um desenvolvedor de nível inicial/médio, para quem mesmo o uso das ferramentas iniciais ainda é um certo desafio e aquisição de experiência. Quando deixa de ser, é hora do desenvolvedor mudar, evoluir.
Acompanhando o trabalho do desenvolvedor e do analista, existe o arquiteto de software. O arquiteto de software define o desenho técnico da aplicação. Comunicação com o banco, arquitetura em camadas, webServices, protocolos para comunicação remota, transações distribuidas, definir como e quando uma determinada implementação é necessária, é esse o trabalho do arquiteto de software.
Criatividade para o arquiteto é o alimento do dia-a-dia. O arquiteto precisa estar constantemente informado sobre as novas tecnologias e criar meios de utilizar as tecnologias existentes e as novas em benefício das empresas.
O fato de faltarem arquitetos de software no mercado e os poucos existentes serem disputados a preço de ouro, é apenas um detalhe...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Quem vai ao usuário identificar as necessidades do usuário é um analista de sistemas e não um desenvolvedor."
na prática, só existe a figura do proganalista. E o programador praticamente não é mais necessário, dado o processo de automação das ferramentas de desenvolvimento. Só é necessário mesmo um analista e um encanador.
"verdadeiros analistas de sistemas adoram identificar problemas nos processos das empresas, poder fazer com que a empresa atinja o seu potencial máximo, isso é criatividade."
isso é chato. E criatividade é o que não mais existe nos ambientes padronizados, rijos e estéreis de desenvolvimento de sistemas comerciais. Criatividade só existe ainda em Ciência da Computação, não Informática, que se tornou um burocrático monstro à parte...
"em geral o desenvolvedor neste cargo é um desenvolvedor de nível inicial/médio, para quem mesmo o uso das ferramentas iniciais ainda é um certo desafio e aquisição de experiência. Quando deixa de ser, é hora do desenvolvedor mudar, evoluir."
mudar, evoluir e se transformar em uma linda borboleta!
Que papo mais furado! Existe algo chamado vocação. Existem pessoas que tem vocação e grande habilidade para trabalhos manuais, outras para música, outras para desenho etc.
Criar algoritmos bem bolados e concisos também é uma vocação e o cara deixar de fazer o que faz melhor e ser apenas pouco mais que incompetente em algo que simplesmente não é sua praia apenas porque a idade ou as condições econômicas pedem, isso é realmente frustrante...
Oi, Nemesis !
"na prática, só existe a figura do proganalista. E o programador praticamente não é mais necessário, dado o processo de automação das ferramentas de desenvolvimento. Só é necessário mesmo um analista e um encanador."
Você parece estar se referindo a um cenário pelo qual já passou. Também passei por inúmeros cenários, inclusive cenários nos quais a figura do analista era bem distinta da figura do desenvolvedor.
Quanto a separação do programador e de um simples, digamos, estagiario usando mecanicamente as ferramentas, essa distinção de posições é fato que já existe, ao mesmo tempo que o programador evolui para a posição de arquiteto.
"isso é chato. E criatividade é o que não mais existe nos ambientes padronizados, rijos e estéreis de desenvolvimento de sistemas comerciais. Criatividade só existe ainda em Ciência da Computação, não Informática, que se tornou um burocrático monstro à parte..."
É chato para quem não tem vocação para isso. Analista não é a evolução natural do programador. Existem programadores que descobrem sua vocação na análise, mas existem programadores que são escovadores de bits e preferem trabalhar com arquitetura de sistemas do que com análise.
"Criar algoritmos bem bolados e concisos também é uma vocação e o cara deixar de fazer o que faz melhor e ser apenas pouco mais que incompetente em algo que simplesmente não é sua praia apenas porque a idade ou as condições econômicas pedem, isso é realmente frustrante..."
Eu fico imaginando, ao ler o que você escreveu, que você está indo contra a evolução do programador para analista. Mas a questão é justamente que o programador não precisa evoluir para analista, a evolução mais natural do programador, conforme seu conhecimento técnico cresce, é para arquiteto de software e não para analista.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Com todo respeito ao post do Dennes, mas vejo muita prograpanda ai e na hora do "vamo ver", nem sempre é assim.
Eu trabalhei por 4 anos com .NET e desde Julho/07 decidi mudar de plataforma e SO pois sempre achei essa tecnologia da MS instável.
Hoje sou adepto de linguagens dinâmicas como Ruby e Python e não vejo razões para voltar a trabalhar com .NET...
E com relação as críticas sobre o RoR, acho que vc deveria reconhecer os méritos desse metaframework por tudo que ele faz, e também reconhecer que a própria MS irá brevemente liberar uma implementação nova do ASP.NET com um MVC EXATAMENTE da mesma forma que o Ruby on Rails trabalha!
E finalizando eu concordo com os outros leitores, Microsoft não é solução pra tudo!
Oi, Samir !
O fato da Microsoft criar uma implementação de MVC no ASP.NET não quer dizer que ela seja fundamental ao ASP.NET.
A implementação de MVC não irá substituir nada, estará lá disponível apenas a quem desejar utiliza-la.
Em minha opinião, é uma questão mercadológica : A Microsoft está criando a implementação de MVC para reduzir a migração para o RoR tendo o MVC como desculpa.
Porém, se for isso, a MS ainda não acertou a mão. Ainda não descobriu o que está motivando que algumas pessoas migrem para RoR (e já adianto que em minha opinião está muito longe de ser mérito técnico), o que é uma pena.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Em minha opinião, é uma questão mercadológica : A Microsoft está criando a implementação de MVC para reduzir a migração para o RoR tendo o MVC como desculpa."
A questão não é só "mercadológica" ou uma "desculpa" furada pra agradar um bando de gato pingado por ai e sim uma grande necessidade hoje em dia que facilita MUITO a vida do programador Web e a MS está correndo atráz sim (como sempre), pois percebeu com o tempo a cagada que foi esse Webforms com modelo orientado a eventos, postback e viewstate, agora está ai, se revirando pra não perder mais desenvoledores, infelizmente é a dura realidade, quem quiser insistir nisso, boa sorte!
Eu prefiro novos horizontes e vou muito bem obrigado!
SimpleCode
http://samirmamude.com
Oi, Samir !
Já conversamos sobre isso antes, não chegaremos a nenhum lugar pois não temos a mesma opinião.
Não se pode aplicar um pattern em um ambiente para o qual ele não foi feito, perde-se mais do que ganha-se.
Quanto aos webForms, são simplesmente fantásticos e tenho certeza que não precisarei falar muito, outros vão comentar (e, na verdade, alguns já comentaram) sobre isso que você está dizendo.
Quanto a Microsoft não ter descoberto o verdadeiro motivo da migração de usuários para RoR, em minha opinião o motivo da migração é apenas um : A dificuldade dos usuários de entenderem um ambiente como o ASP.NET e a busca de um ambiente de mais fácil entendimento. Tem um comentário meu sobre isso um pouco mais acima...
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Quanto a Microsoft não ter descoberto o verdadeiro motivo da migração de usuários para RoR, em minha opinião o motivo da migração é apenas um : A dificuldade dos usuários de entenderem um ambiente como o ASP.NET e a busca de um ambiente de mais fácil entendimento. Tem um comentário meu sobre isso um pouco mais acima..."
Desculpa mas pra mim vc está entrando em contradição, se o Visual Studio e o ASP.NET é tão fácil assim de usar ( que nem sempre é verdade), porque toda essa dificuldade então?
Ah já sei, é sempre culpa do usuário!
;)
SimpleCode
http://samirmamude.com
Oi, Samir !
Não existe contradição alguma...
Usar é simples sim, não conheço interface mais simples, por isso gosto dele. Entender o que está sendo feito, qual o melhor caminho para fazer, porque fazer da forma x e não y, isso é complicado. O entendimento do ambiente é complicado especialmente para quem o pega em uma vesão avançada.
Quanto a ser sempre culpa do usuário, nesse caso, programador, a parcela dele é ter desistido sem ter o adequado entendimento do ambiente.
A parcela da MS é não entender a necessidade de um plano educacional para uma ferramenta cujo entendimento é complexo.
No dia que houver uma ferramenta mais simples para produção e que gere aplicações de simples manutenção, então sim, será possível avaliar se esta complexidade era necessária ou não (desafios desenvolvimento lado a lado com cronômetro contando são aceitos, mas tem que ser um bom cronometro, medindo segundos)
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Quanto a ser sempre culpa do usuário, nesse caso, programador, a parcela dele é ter desistido sem ter o adequado entendimento do ambiente."
Nem sempre é a falta de entendimento viu Dennes, acho que até o programador mais experiente acaba desistindo pela tamanha complexidade desnecessária, e quando eu digo são grandes sistemas, integrações com ERP´s que foram situações que eu já tive uma certa experiência.
É praticamente impossível o cara fazer um website só drag and drop ou wizards e deixar o ASP.NET gerar todo o código por tras no HTML, uma hora o cara vai precisar lidar com código e ai começam as dificuldades com os webcontrols.
O mesmo é válido para o LINQ, já estou até imaginando a salada de código que vai virar isso, sem uma clara separação de camadas como presa o Model View Controller, um modelo que o ASP.NET(code-behind) não mostra claramente, isso ja está mais que comprovado pela comunidade a fora e a MS insisti nisso novamente.
Mas enfim, acho que já deu minha cota sobre essa discussão,
só acho que algumas verdades precisam ser esclarecidas para
mostrar o outro lado da moeda para quem não é iniciado nesse ambiente.
[]´s
SimpleCode
http://samirmamude.com
Oi, Samir !
Também tive as mesmas experiências, mas não tive suas dificuldades. Portanto não posso concordar com você.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
"Quanto a Microsoft não ter descoberto o verdadeiro motivo da migração de usuários para RoR, em minha opinião o motivo da migração é apenas um : A dificuldade dos usuários de entenderem um ambiente como o ASP.NET e a busca de um ambiente de mais fácil entendimento. Tem um comentário meu sobre isso um pouco mais acima..."
Rails é de mais fácil entendimento que ASP.NET segundo vc.
Então pq eu tenho que usar o que é mais difícil?
Por que vc diz que é melhor? O post era sobre Visual Studio e não uma Framework War!!! Deixe o pessoal usar o que quer, vc não tem a missão de pregar a palavra MS se isso incomoda os outros. Tem?
Oi, NewUser !
Se alguém publica um comentário em artigo meu, é para iniciar um debate tecnico. Deseja comparações técnicas ? Algo assim ?
No caso do Samir, não me aprofundei tecnicamente porque já conversei longamente com ele sobre o assunto.
Quanto a sua pergunta :
"Então pq eu tenho que usar o que é mais difícil?"
Primeiramente, você não *tem* nada.
Depois, eu citei especificamente, mais dificil de compreensão, mas extremamente simples para o desenvolvimento e manutenção. Existe, portanto, ganho e se você experimentar e vencer eventual complexidade inicial, vai identificar o ganho.
De qualquer forma, estou a disposição para qualquer informação técnica que deseje.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Acho que para mim dou a preferencia pela simplicidade, quando algo fica de difícil compreeenção é iguamente próxima a possibilidade de erros e problemas, nunca vi em algum lugar ser adotado um sistema de dificl compreensão em que o mesmo tenha sido realmente benéfico, da mesma forma que o mal mundo visa o que é abstrato, já que dar-lhe interpreteção independente do exato, faz-se que gere discordia. Dessa forma apresento-lhe minha opnião:
Em seu blog e em um de seus vídeos foi-lhe citado que programar diretamente no código sem uma IDE ou mesmo RAD seria loucura, sendo melhor usar a IDE/RAD para tal benefício.
Contudo é acreditado que atualmente existem diversas camadas com esse objetivo, de forma que você assim como todos nós tentamos abstrair toda essa condição, mas será realmente que a resposta esteja na abstração?
Ou mesmo se é necessário refazer tantas as vezes as mesmas coisas, como vem ocorrendo? Analize, metade das aplicações atualmente existentes quando são pesadas são chamadas de forma mais peculiar como robustas, ou mesmo dizendo serem eficientes, mas será que a eficiencia de ferramenta é derivada de sua complexidade?
Vi por deveras vezes programas estremamente mais simples aos quais são conduzidos por outras ferramentas que fazem uso de sua funcionalidade, nesse caso as IDEs antigamente funcionavam assim, quer dizer tinha um compilar, um editor, um debugador e um make, ao qual geravam toda a idéia de projetos, dessa forma cada ferramenta evoluia a seu objetivo e eficácia, contudo a idéia integrada dos projetos atuais geraram que tudo isso deveria integrado a um único ambiente dessa forma sendo o ambiente o real desenvolvedor?
Vemos isso pelos RADs que visam tornar o trabalho em código a parte do trabalho de desenvolvimento, mas apesar de sua eficácia, eles geraram um grade male, onde o código em si se tornara mal projetado e você como eu e outros ficavamos a depender do ambiente ao invés de nossa real competencia.
Se analizar perceberá também que atualmente as exigencias de hardware se tornam irrelevantes aos benéficios, quer dizer se usar um processador Dual Core em um Windows Vista terás o mesmo desempenho que um Semprom em um Windows XP, gerado pelo fato de boa parte do sistema ter adotado uma nova metodologia e recontrução, que atualmente gera tal incompatibilidade. Mas se associar isso ao fator ferramenta, então será realmente necessário que uma ferramenta tenha que lhe consumir recursos?
O mesmo ocorre com a IDE/RAD Visual Studio.NET que apesar de ser impressionante, acabo por desconsiderar os desenvolvedores que usam essa ferramenta, por motivos que quando a mesma ou o ambiente emprega os modelos de perdas, simplesmente ao invés de reaproveitarem e corrigirem o erro, por deveras vezes vejo refazer tudo novamente, usando o Drag and Drop, isso é certo?
Sei que a ferramenta é poderosa, mas e você, ou eu e ou todos? Será que só é capaz de trabalhar apenas nessa ferramenta?
Como já disse se algo é de dificil explanação então considero de dificil aceitação, da mesma forma que repercutiu os modelos de programação, por exemplo:
A programação procedural ainda se mantém por apenas um motivo, ela é simples; a Orientação a Objetos apesar de seu poder de reuso está se provando que é melhor apenas aprovetar de sua metodologia ou mesmo introduzi-la em uma VM, já que a mesma se mostrou ineficiente em muitos casos, onde a programação se tornou rápida no desenvolvimento, mas lenta na atividade e além de tornar os projetos cada vez mais complicados, da mesma forma que a POA (Programação Oreintada a Aspectos), o mesmo também ocorre com a programação que gera código como o HTML, ou mesmo esse Linq que serve para abstrair o código SQL que já é simples, será isso meio perigoso?
Os unix se mostraram eficientes por causa da simplicidade que resultou em seu reuso, quer dizer programas bem espécificos em suas tarefas e com grupos focados nelas, onde cada grupo faz o que sabe fazer de melhor, o que resulta geralmente em sua estabilidade, temos ferramentas hoje que são consideradas plenamente estáveis, um deles é o TeX e o LaTeX que uso para meus trabalhos, ou o make que também é simples e poderoso, entre outros aos quais que se fossem citados nem seriam consideradas suas utilidades como no caso o VIm, o echo, o cat, o bash, o Python, entre outros. Dessa forma provando que a simplicidade e especificabilidade da ferramenta é mais importante que um todo integrado.
Em outros casos é realmente difícil compreender como uma ferramenata que só tem apenas uma utilidade se demonstra eficiente para um serviço, contudo devemos considerar que tal ferramenta será utilizada por outras ferramentas, como acontecia com as IDEs no passado, e o que tornara o trabalho realmente produtivo, é só observar a história da tecnologia, atualmente estamos voltando para o que fora rejeitado, por exemplo os computadores são digitais, mas os computadores quanticos que estão começando a surgir são totalmente analógicos, o que prova tal regressão (estou um pouco ausente de links para a noticia no momento, mas caso eu a encontre postarei aqui), o mesmo ocorre nos sistemas, também onde foi-se criado que seria melhor usar e abusar da OO, contudo a OO está apenas sendo melhor aproveitada em uma VM e se for para Web, quer dizer ela realmente encontrou seu foco, podemos ainda considerar a separação entre o código do designer que atualmente também está sendo novamente agregada.
Creio que isso se resulta que nada que seja feito atualmente possa mudar o que é lógico e matemático, em minha sincera opnião como a de muitos, acredito que cada tecnologia devera ter seu foco, nada mais. É provado que empresa nenhuma é capaz de oferecer uma ferramenta que possa lhe contribuir para todos os seus problemas, a Apple ela se baseia no modelo Unix de trabalho, por isso que muitos gostam do OSX, e nem ao menos sabem como funcionam por dentro, quer dizer fizeram da maneira lógica, no GUN/Linux (ou o de "digratis") também trabalha da forma lógica e por essa razão a tão grande aceitação do sistema está aumentando, principalmente por causa da Canonical, e vai aumentar sua adoção o que é inevitável, pois o modelo de markerting adotado está realmente sendo o seu principal foco até a Sun percebeu isso.
Mesmo com os benéficios gerados pela Microsoft, ela tem que realmente escolher seu foco ou então vai acabar como outras empresas, pelo que já sei sobre ela, ela está investindo pesadamente no seu XBOX 360 onde tudo está se focando realmente no XBOX 360 além de outros projetos de hardware que ela anda fazendo, contudo tudo está mais centralizado nesse video-game, mas se ela realmente focar em uma área verdadeiramente então vai ocorrer um fenômeno interessante, por exemplo se ela focar no video-game, então as empresas de hardware vão realmente se espandir, já que muitas nem aguentam mais o padrão 8086 (diga-se a Intel de passagem), vai virar zona? Vai, mas nem tanto, pois as tecnologias estarão mais abstraídas do hardware (se lembra das VMs, pois esqueça, vai ser o procedural mesmo que vai usar e compilado, no caso o C), ou mesmo o total crescimento de certas empresas, já que vão investir no que fazem de melhor.
Um caso interessante de que prova que o foco é o mais importante e o que lhe faz manter-se no modelo de mega-coorporações é a Google, pois apesar de dizerem que ela está dominando o mundo ela ainda foca naquilo que faz de melhor, trafego de informações Web, ou melhor pesquisa, quer dizer tudo nela foca o trabalho de conseguir a informação mais rapido dessa forma focando somente a Web, tudo que ela fez outras empresas do ramo também faz, só que ela faz melhor, pois trabalha com diversas tecnológias para cada situação, resultado ela faz um projeto organizado, até o Android é parte disso, você pode ver como um celular, contudo só usa recursos Web dela, outro exemplo é a Oi cresce que é uma beleza e foca apenas a telefonia celular se reaparar tudo nela gira em torno de seu celular, até mesmo ter comprado a Telemar só foi apenas para haver mais aceitação de seu celular até porque todo vê os beneficios que ela oferece para celular, o Oi pago também é um desses benefícios, tudo nela é telefonia, mas o que foca a Microsoft?
Poderia dizer a facilidade, contudo seria quase que mentira, pois ela está tentando circular tudo que pode sem realmente fazer um foco, observe o sistema operacional, só usa um sistema de arquivos, ainda tem também um banco de dados, ou uma IDE de desenvolvimento, ou servidor, ou desiner, e todo mundo saber que nada é alto suficiente, pois se fosse, então para quê teria empregados? Ou será que ela foca o Desktop? Mas porque está querendo foca a Web também agora? Eu poderia dizer diversas críticas, como geralmente faço, mas as vi que eram tolices, perguntas geralmente são respostas que trazem o que é óbvio.
Mas agora consideremos o porque de o Ubuntu está crescendo, a resposta é óbvia ele é simples e fácil, você coloca no pc e já está rodando (quer dizer a Canonical foca a facilidade de uso apenas), por incrível que pareça eu estou aos poucos convencendo as pessoas por aqui, isso devagar é claro, mas mostrando as faltas e mostrando as vantagens, logo logo vai ter uma nova mudança radical, nesse caso, apenas aviso para que ninguém fique para trás, isso que digo é independente de ser fanboy ou mesmo xiita, mas isso tem a ver com o mantimento das tecnologias, pois todos nós sabemos que o mero uruário de caso é o futuro para o nosso trabalho.
Você citou que trabalhar diretamente no código seria quase que loucura, contudo todos nós sabemos que o que gira o sistema é o código e o código foi criado para simplificar o trabalhar com os bits diretamente que eram impossóveis de serem entendidos, o que resultou no assembly, contudo o assembly tinha dois problemas muito sérios, um seria a sua exclusividade de arquitetura, quer dizer se o comando AX em outra arquitetura for EAX então ferrou, todo o trabalho no lixo, e outro motivo era que é simples demais, quer dizer um comando por linha, nem laço de iteração existe no assembly, como por exemplo, para tem o jump (para pular), ja (pule se for maior), jb (pule se for menor), je (pule se for igual), jne (pule se for diferente, e além de outros jumps), cmp (compare para registradores, no caso cada comando precisa sempre está com pelo menos um registrador, e no processador você tem quatro, caso seja um 8086, se for outro então ferrou) e tem que usar isso para fazer um for por exemplo, o if também, nesse caso se torna extremamente custoso e inviável, por essa razão foi-se criadas as famosas linguagens de alto nível, no caso o C que foi projetada e analizada para ser a mais próxima dos benefícios do assembly gerando geralmente códigos altamente otimizados e benéficos, mas como C foi projetado para compiladores, muitos dizem que se tornar uma linguagem difícil, contudo ela pouquissimas palavras chaves, sendo necessário apenas que estude para saber usa-la, ao contrário do Java e .NET em geral que atualmente é um framework estremamente complexo e trabalhoso em desenvolvimento, o que na realidade deveria ser simples, como já foi dito por outros dar a sensação de que você está matando uma barata com uma bazuca, será que isso é realmente necessário?
Eu já contei porque é inviável usar assembly, então será que devemos novamente cometer o mesmo erro, pois os assembly atuais tem mais de mil comandos, será que realmente precisamos de todos esse comandos em linguagens de alto nível? Será que a melhor escolha seria realmente ago que fosse simples? Temos que para com essa de dar um tiro no próprio pé a toda hora, temos que saber em que cada tecnologia pode ser melhor empregada, pois sabendo o seu foco, a sua complexidade se torna irrelevantem, pois será apenas aproveitado o que lhe é benéfico no seu foco, esse é o caso do OpenGL, muitos acham que é complicado, mas é bem simples, ou mesmo SDL, onde o pessoal só aproveita a parte de controles dele, quer dizer você usa o que lhe for útil, no caso de um framework você se depende totalmente do framework, isso bom? É facíl, pois seus estudos só se focam em um lugar, contudo isso benéfico?
Sei que diferente do .NET, Visual Studio e Windows, tecnologias são difícieis para aprender, eu tenho que tar o tempo todo administrando, pois a ferramenta deixou de ser auto suficiente, o Ruby on Rails é puro código, nem RAD se tem para ainda (ou a Borland já lançou), eu tenho que está adminstrando, trabalhando, resolvendo soluções? Isso bom? Isso é difício, contudo é trabalho. Mas isso é chato a ferramenta realmente no máximo diz que tem coisa errada e eu tenho que resolver a bronca, isso é ruim? Talves sim, mas pelo menos ela deixa de ser uma caixa preta e eu ao invés de oferer um produto eu ofereço um serviço, quero dizer acabo por me tornar um profissional mais caro, já que vale-se o dito do especialista, eu cobro 1 real, os outros 99 é pelo que estudei e focando assim a trazer a solução que o cliente precisa, como foi dito, nesse caso se tua confiança e analize de benéfico e necessidade é conhecida por ti, então és capaz de resolver o que o cliente quer sem ao menos ter que lhe indicar a outro prestador de serviço é claro.
Mas o que é mais interessante é que isso lembra a medicina, hoje em dia cada vez mais estão havendo áreas bem mais específicas, dessa forma havendo necessidade de que existam profissionais que indiquem para a necessidade, esse é o papel do analista, que no caso da medicina é o clinico geral, se reparar nem para resolver é o caso e sim trazer a solução mais rápido, então é um analista que vai observar o problema ele vai saber que tipos de profissionais serão indicados em sua empresa, justamente para conseguir a tal solução, observe solução sem ser integrada, quer dizer vai escolher que grupos irão interagir para esse caso e que tecnologias poderiam ser benéficas.
Atualmente temos tecnologias extremamente eficiente que quando juntas para uma dada solução é algo que dura anos sem ao menos ter que está o tempo todo trocando, mas apenas melhorando e corrigindo falhas. O objetivo do OpenSource é mostra que é eficiente e que código nada mais são que um monte de comandos dados para um computador, nada de mais a Free Software diz que código fechado é insegurança e que deve ser aberto ao público que deixem de refazer a roda, ambas para mim são importantes e se provam ter falhas e benéficios se reparar isso é diferente de ser "digratis", isso é serviço.
Para encerrar essa resposta "fanboy" uma vez conversei com um senhor de 68 anos, o cara simplesmente saca muito de economia e tendencia de mercado e nisso ele havia me perguntado qual área eu atuo, eu respondir desenvolvimento de softwares, sabe sua resposta, por incrivel que pareça ele me disse para investir em Linux, pois pelo que ele viu é a nova tendencia de mercado, ou então o que outros estão dizendo agora que o Ruby on Rails também é nova tendencia, o que está havendo?
Agora fico apresentar a vocês o Zen do Python quem ler entenderá o que está acontecendo de ilógico:
The Zen of Python (by Tim Peters) <\b>
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!
Fundamental...
Oi, cWars !
Qual você acha ser de mais simples compreensão, orientação a objetos ou desenvolvimento estruturado ? Acho que isso já diz bastante sobre sua opinião a esta questão de "dificil compreensão", bem como a opinião de meus alunos, ex-adoradores do Java e que estão cada vez mais apaixonados pelo .NET a cada nova descoberta.
"Em seu blog e em um de seus vídeos foi-lhe citado que programar diretamente no código sem uma IDE ou mesmo RAD seria loucura, sendo melhor usar a IDE/RAD para tal benefício."
Cuidado para não distorcer o que eu citei. Certamente você viu isso em um vídeo em que cito que seria masoquismo programar usando notepad. É bem diferente.
"Contudo é acreditado que atualmente existem diversas camadas com esse objetivo, de forma que você assim como todos nós tentamos abstrair toda essa condição, mas será realmente que a resposta esteja na abstração?"
Se você precisar cavar um buraco, um grande buraco, como você irá fazer ? Cavará com as mãos, com uma pá ou uma escavadeira ?
Acho que você irá preferir usar uma escavadeira. Mas há 3 mil anos atrás utilizariam as mãos. A diferença de tempo de produção deste burado, entre hoje e 3 mil anos atrás, seria um pouco diferente, não ?
Pois é, a abstração, neste caso, foi benéfica e muito necessária, não concorda ?
As cenas de Naufrago, onde ele precisa aprender a acender fogo, entre outras, mostram bem este conflito.
"Ou mesmo se é necessário refazer tantas as vezes as mesmas coisas, como vem ocorrendo? Analize, metade das aplicações atualmente existentes quando são pesadas são chamadas de forma mais peculiar como robustas, ou mesmo dizendo serem eficientes, mas será que a eficiencia de ferramenta é derivada de sua complexidade?"
A criação de aplicações envolve um número gigantesco de variáveis. Você não pode pegar um resultado específico e querer atacar uma variável específica.
Eu nunca disse que a complexidade de uma ferramenta faria com que ela fosse eficiente. Quanto ao contrário, é uma realidade momentânea, em um futuro próximo surgirão ferramentas simples e eficientes. Aguardemos.
"Vi por deveras vezes programas estremamente mais simples aos quais são conduzidos por outras ferramentas que fazem uso de sua funcionalidade, nesse caso as IDEs antigamente funcionavam assim, quer dizer tinha um compilar, um editor, um debugador e um make, ao qual geravam toda a idéia de projetos, dessa forma cada ferramenta evoluia a seu objetivo e eficácia, contudo a idéia integrada dos projetos atuais geraram que tudo isso deveria integrado a um único ambiente dessa forma sendo o ambiente o real desenvolvedor?"
Seu texto está muito confuso. Mas vou tentar comentar algo.
O que você fazia nesta época de Clipper, levando 2, 3 dias na melhor das hipóteses, hoje o .NET faz em 5 minutos. É como o buraco, as mãos e a escavadeira.
"Vemos isso pelos RADs que visam tornar o trabalho em código a parte do trabalho de desenvolvimento, mas apesar de sua eficácia, eles geraram um grade male, onde o código em si se tornara mal projetado e você como eu e outros ficavamos a depender do ambiente ao invés de nossa real competencia."
O conceito de RAD mudou por completo no ano de 2002 com o .NET. Você ainda está ligado ao conceito de RAD anterior ao ano de 2002
Quanto a competência, você prefere depender da competência de suas mãos para fazer o buraco ou da competência da escavadeira ? Voltamos ao caso do Naufrago.
"Se analizar perceberá também que atualmente as exigencias de hardware se tornam irrelevantes aos benéficios, quer dizer se usar um processador Dual Core em um Windows Vista terás o mesmo desempenho que um Semprom em um Windows XP, gerado pelo fato de boa parte do sistema ter adotado uma nova metodologia e recontrução, que atualmente gera tal incompatibilidade. Mas se associar isso ao fator ferramenta, então será realmente necessário que uma ferramenta tenha que lhe consumir recursos?"
Desculpe, o texto está confuso, por exemplo, quando fala de incompatibilidade.
Analise a usabilidade e as possibilidades de aplicações WPF e Silverlight, tal como o http://www.tafiti.com
"O mesmo ocorre com a IDE/RAD Visual Studio.NET que apesar de ser impressionante, acabo por desconsiderar os desenvolvedores que usam essa ferramenta, por motivos que quando a mesma ou o ambiente emprega os modelos de perdas, simplesmente ao invés de reaproveitarem e corrigirem o erro, por deveras vezes vejo refazer tudo novamente, usando o Drag and Drop, isso é certo?"
É certo você culpar a escavadeira pela incapacidade do operador de controla-la ?
"Sei que a ferramenta é poderosa, mas e você, ou eu e ou todos? Será que só é capaz de trabalhar apenas nessa ferramenta?"
Nunca disse isso. Você sempre pode fazer o buraco com a mão, não é ?
Mas você quer ?
"Como já disse se algo é de dificil explanação então considero de dificil aceitação, da mesma forma que repercutiu os modelos de programação, por exemplo:
A programação procedural ainda se mantém por apenas um motivo, ela é simples; a Orientação a Objetos apesar de seu poder de reuso está se provando que é melhor apenas aprovetar de sua metodologia ou mesmo introduzi-la em uma VM, já que a mesma se mostrou ineficiente em muitos casos, onde a programação se tornou rápida no desenvolvimento, mas lenta na atividade e além de tornar os projetos cada vez mais complicados, da mesma forma que a POA (Programação Oreintada a Aspectos), o mesmo também ocorre com a programação que gera código como o HTML, ou mesmo esse Linq que serve para abstrair o código SQL que já é simples, será isso meio perigoso?"
Você misturou inúmeras questões neste tópico e o texto ficou mais confuso.
A OO demorou a ser aceita primeiro porque a OO depende da existência de bancos de dados 100% orientado a objetos e isso nunca funcionou tão perfeitamente, segundo que as regras de mapeamento objeto/relacional não são claras e levou-se muitos e muitos anos até que alguns autores se arriscassem a fazer afirmações nesta área. Em momento algum significa que ela não seja melhor do que a estruturada.
A POA é um complemento da OO, mas que ainda não encontrou um ambiente técnico adequado para sua existência, por isso só existe no meio acadêmico. Porém os mais observadores já devem ter visto que desde a versão 1.0 do .NET a Microsoft tem inserido recursos de POA fake no .NET, que funcionam muito bem, tanto que o ASP.NET Ajax da Microsoft usa e abusa maravilhosamente deste recurso.
Quanto ao Linq, precisaria analisar todas suas implicações e até mesmo o Entity Framework para entende-lo melhor. Quanto a geração de HTML, isso é uma gigantesca simplificação do ambiente do ASP.NET.
De qualquer forma, a escavadeira gera um buraco. Você prefere gerar o buraco com a mão ?
"Os unix se mostraram eficientes por causa da simplicidade que resultou em seu reuso, quer dizer programas bem espécificos em suas tarefas e com grupos focados nelas, onde cada grupo faz o que sabe fazer de melhor, o que resulta geralmente em sua estabilidade, temos ferramentas hoje que são consideradas plenamente estáveis, um deles é o TeX e o LaTeX que uso para meus trabalhos, ou o make que também é simples e poderoso, entre outros aos quais que se fossem citados nem seriam consideradas suas utilidades como no caso o VIm, o echo, o cat, o bash, o Python, entre outros. Dessa forma provando que a simplicidade e especificabilidade da ferramenta é mais importante que um todo integrado."
Dos que você citou, só conheço o Python. Me deixou em grande dúvida se você está falando sobre TI, desenvolvimento ou misturando tudo.
Quanto ao Python, tenho alunos que conhecem Python, Java, PHP, ASP Clássico, entre diversos outros ambientes e dia a dia cada um fica cada vez mais maravilhado com a produtividade gerada pelas características do framework .NET.
"Em outros casos é realmente difícil compreender como uma ferramenata que só tem apenas uma utilidade se demonstra eficiente para um serviço, contudo devemos considerar que tal ferramenta será utilizada por outras ferramentas, como acontecia com as IDEs no passado, e o que tornara o trabalho realmente produtivo, é só observar a história da tecnologia, atualmente estamos voltando para o que fora rejeitado, por exemplo os computadores são digitais, mas os computadores quanticos que estão começando a surgir são totalmente analógicos, o que prova tal regressão (estou um pouco ausente de links para a noticia no momento, mas caso eu a encontre postarei aqui), o mesmo ocorre nos sistemas, também onde foi-se criado que seria melhor usar e abusar da OO, contudo a OO está apenas sendo melhor aproveitada em uma VM e se for para Web, quer dizer ela realmente encontrou seu foco, podemos ainda considerar a separação entre o código do designer que atualmente também está sendo novamente agregada."
Alguns pontos estão difíceis de entender.
A parte de granularização de ferramentas eu expliquei e demonstrei na palestra sobre windows server 2008 aqui no Rio, na qual falei sobre cmdLets e PSCmdLets no PowerShell, ou seja, muito voltado para infraestrutura.
As afirmações sobre onde OO está sendo melhor aproveitada estão mal explicadas e analisadas (vide clickOnce) bem como os objetivos da VM. Separação entre código e design está sendo aplicada em ambiente windows, com grandes perspectivas, vide WPF.
"Mesmo com os benéficios gerados pela Microsoft, ela tem que realmente escolher seu foco ou então vai acabar como outras empresas, pelo que já sei sobre ela, ela está investindo pesadamente no seu XBOX 360 onde tudo está se focando realmente no XBOX 360 além de outros projetos de hardware que ela anda fazendo, contudo tudo está mais centralizado nesse video-game, mas se ela realmente focar em uma área verdadeiramente então vai ocorrer um fenômeno interessante, por exemplo se ela focar no video-game, então as empresas de hardware vão realmente se espandir, já que muitas nem aguentam mais o padrão 8086 (diga-se a Intel de passagem), vai virar zona? Vai, mas nem tanto, pois as tecnologias estarão mais abstraídas do hardware (se lembra das VMs, pois esqueça, vai ser o procedural mesmo que vai usar e compilado, no caso o C), ou mesmo o total crescimento de certas empresas, já que vão investir no que fazem de melhor."
Video-Game ?
E a TV Digital, não conta não ?
A importância do foco está diretamente relacionada ao tamanho de uma organização.
"Oi cresce que é uma beleza e foca apenas a telefonia celular se reaparar tudo nela gira em torno de seu celular, até mesmo ter comprado a Telemar só foi apenas para haver mais aceitação de seu celular até porque todo vê os beneficios que ela oferece para celular, o Oi pago também é um desses benefícios, tudo nela é telefonia, mas o que foca a Microsoft?"
Um pouquinho de história torna-se necessário. Não cariocas normalmente fazem essa confusão. Oi e Telemar sempre foram uma empresa única, a divisão ocorreu por questões de monopólio de mercado e muita briga com a concorrência e nem por isso deixaram de usar práticas abusivas no mercado. Portanto, Oi/Telemar envolvem telefonia celular, telefonia fixa, acesso a internet discado e banda larga, hosting (isso ai), fornecimento de links, enriquecimento do Lulinha com uma TV de jogos, entre milhões de outras coisas que desconhecemos.
"Poderia dizer a facilidade, contudo seria quase que mentira, pois ela está tentando circular tudo que pode sem realmente fazer um foco, observe o sistema operacional, só usa um sistema de arquivos, ainda tem também um banco de dados, ou uma IDE de desenvolvimento, ou servidor, ou desiner, e todo mundo saber que nada é alto suficiente, pois se fosse, então para quê teria empregados? Ou será que ela foca o Desktop? Mas porque está querendo foca a Web também agora? Eu poderia dizer diversas críticas, como geralmente faço, mas as vi que eram tolices, perguntas geralmente são respostas que trazem o que é óbvio."
Mas uma vez, o assunto não está claro. Mas interoperabilidade virou lei na Microsoft. Windows Server fala com Linux na boa e (espaço Jabá) qualquer faculdade que queira formar um interoperability day, com funcionários diretos da Novell e da Microsoft mostrando a interoperabilidade entre seus ambientes, pode entrar em contato comigo que organizo isso, sem custo algum.
"Você citou que trabalhar diretamente no código seria quase que loucura, contudo todos nós sabemos que o que gira o sistema é o código e o código foi criado para simplificar o trabalhar com os bits diretamente que eram impossóveis de serem entendidos, o que resultou no assembly, contudo o assembly tinha dois problemas muito sérios, um seria a sua exclusividade de arquitetura, quer dizer se o comando AX em outra arquitetura for EAX então ferrou, todo o trabalho no lixo, e outro motivo era que é simples demais, quer dizer um comando por linha, nem laço de iteração existe no assembly, como por exemplo, para tem o jump (para pular), ja (pule se for maior), jb (pule se for menor), je (pule se for igual), jne (pule se for diferente, e além de outros jumps), cmp (compare para registradores, no caso cada comando precisa sempre está com pelo menos um registrador, e no processador você tem quatro, caso seja um 8086, se for outro então ferrou) e tem que usar isso para fazer um for por exemplo, o if também, nesse caso se torna extremamente custoso e inviável, por essa razão foi-se criadas as famosas linguagens de alto nível, no caso o C que foi projetada e analizada para ser a mais próxima dos benefícios do assembly gerando geralmente códigos altamente otimizados e benéficos, mas como C foi projetado para compiladores, muitos dizem que se tornar uma linguagem difícil, contudo ela pouquissimas palavras chaves, sendo necessário apenas que estude para saber usa-la, ao contrário do Java e .NET em geral que atualmente é um framework estremamente complexo e trabalhoso em desenvolvimento, o que na realidade deveria ser simples, como já foi dito por outros dar a sensação de que você está matando uma barata com uma bazuca, será que isso é realmente necessário?"
Usar as mãos, usar uma pá ou usar uma escavadeira para cavar um buraco.
Comparar o antigo C com os recursos do .NET é o mesmo que comparar o tempo de fazer um buraco com a mão com o tempo de fazer um buraco com uma escavadeira.
"Eu já contei porque é inviável usar assembly, então será que devemos novamente cometer o mesmo erro, pois os assembly atuais tem mais de mil comandos, será que realmente precisamos de todos esse comandos em linguagens de alto nível? Será que a melhor escolha seria realmente ago que fosse simples? Temos que para com essa de dar um tiro no próprio pé a toda hora, temos que saber em que cada tecnologia pode ser melhor empregada, pois sabendo o seu foco, a sua complexidade se torna irrelevantem, pois será apenas aproveitado o que lhe é benéfico no seu foco, esse é o caso do OpenGL, muitos acham que é complicado, mas é bem simples, ou mesmo SDL, onde o pessoal só aproveita a parte de controles dele, quer dizer você usa o que lhe for útil, no caso de um framework você se depende totalmente do framework, isso bom? É facíl, pois seus estudos só se focam em um lugar, contudo isso benéfico?"
Que tal se você, em um único dia, contar com quantos objetos você lida durante o dia ?
Você preferiria continuar usando pau e pedra como a 5.000 anos atrás ?
Em que andar você mora/trabalha ? Você usa elevador ou escada para chegar em sua residência/trabalho ? Então você depende dele, certo ? Claro que se faltar luz você pode usar a escada, e o mesmo acontece na tecnologia, mas você gosta ?
"Sei que diferente do .NET, Visual Studio e Windows, tecnologias são difícieis para aprender, eu tenho que tar o tempo todo administrando, pois a ferramenta deixou de ser auto suficiente, o Ruby on Rails é puro código, nem RAD se tem para ainda (ou a Borland já lançou), eu tenho que está adminstrando, trabalhando, resolvendo soluções? Isso bom? Isso é difício, contudo é trabalho. Mas isso é chato a ferramenta realmente no máximo diz que tem coisa errada e eu tenho que resolver a bronca, isso é ruim? Talves sim, mas pelo menos ela deixa de ser uma caixa preta e eu ao invés de oferer um produto eu ofereço um serviço, quero dizer acabo por me tornar um profissional mais caro, já que vale-se o dito do especialista, eu cobro 1 real, os outros 99 é pelo que estudei e focando assim a trazer a solução que o cliente precisa, como foi dito, nesse caso se tua confiança e analize de benéfico e necessidade é conhecida por ti, então és capaz de resolver o que o cliente quer sem ao menos ter que lhe indicar a outro prestador de serviço é claro."
Mais uma vez, confuso.
O conceito de caixa preta é anterior a 2002. Em 2002 o conceito de RAD foi alterado, conforme citei.
Se no RoR você levar 10 dias para fazer uma solução e no VS eu levar 1 dia, sendo que ao final ambos cobrarmos um valor X, quem está cobrando por mão de obra realizada e quem está cobrando pelo conhecimento adquirido ?
Quanto ao tempo de execução, aceito desafios práticos.
"Atualmente temos tecnologias extremamente eficiente que quando juntas para uma dada solução é algo que dura anos sem ao menos ter que está o tempo todo trocando, mas apenas melhorando e corrigindo falhas."
O que faz uma tecnologia ser trocada não é a tecnologia, mas a evolução do mercado.
[]'s
---------------------
CidadaoCarioca
BufaloInfo
Olá Dennes!
Agora vou rsponder suas questões, é bom o argumento e opniões, já que são de debates que valem a evolução do conhecimento independente que quais áreas, como dizia Newton: "Eu me apoiei em ombros de gigantes", e é assim que o mundo realmente gira, cada um apoiando no conhecimento anterior, o que muitas vezes tornar que a questão do conhecimento limitado é existente, mas disfaçada por cousa de evolução, muitas vezes herdadas de um remoto passado, onde o que vale realmente é saber que ferramentas pode-se usar para aumentar ainda mais a capacidade do conhecimento ou se quais são as alternativas em tal momento:
Qual você acha ser de mais simples compreensão, orientação a objetos ou desenvolvimento estruturado? Acho que isso já diz bastante sobre sua opinião a esta questão de "dificil compreensão", bem como a opinião de meus alunos, ex-adoradores do Java e que estão cada vez mais apaixonados pelo .NET a cada nova descoberta.
Quando eu estudei primeiramente a PPE (Programação Procedural Estruturada) eu a considerava extremamente simples até porque foi de facil compreenção, contudo meus estudo ficaram prejudicados por ter iniciado em Pascal, e quando passei para o Object Pascal (no caso Delphi) a minha compreenção sobre a POO fora prejudicada, já que a idéia do Object Pascal sobre a POO se torna realmente difícil, sem contar que a ferramenta abstrai demais essa metodologia, apresentando-lhe como uma linguagem, nessa caso eu tive que revalidar todo o meu conhecimento me focando ao estudo de C, que nesse caso inicie com o C Completo e Total que só recomendo apenas como um livro consulta, nada mais. E após meus estudo com C, foi que comecei a compreender o conceito de POO estudando Java e C# (ao qual gostava muito da linguagem C#, era realmente agradável programar nessa linguagem, em sua versão 2.0) o qual compreendir de maneira quase que espontania, tanto o conceito de segurança de código quando o conceito de desenvolvimento e reuso.
Contudo antes via a metodologia POO como uma linguagem o que foi de dificil assimilação, graças a idéia dada pelo ensinamento no Delphi, o que me obrigou a também rever meus conceitos e a estudar bibliotecas POO em PPE o que me valeu a entender os benefícios dados por essa metodologia, que nesse caso provam que é uma metodologia, e foi por essa razão que foi simples o entendimento de uso de bindings (uso de técnicas procedurais para a POO), front-ends (abstração de aplicações), segurança de código, modulariazação e e reusabilidade.
"Em seu blog e em um de seus vídeos foi-lhe citado que programar diretamente no código sem uma IDE ou mesmo RAD seria loucura, sendo melhor usar a IDE/RAD para tal benefício."
Cuidado para não distorcer o que eu citei. Certamente você viu isso em um vídeo em que cito que seria masoquismo programar usando notepad. É bem diferente.
Realmente, mas neste caso temos que considerar que o Bloco de Notas pode ser o editor, mas mesmo assim deve ser evitado o editor? Eu uso o VIm para minhas aplicações e estudo que também é um editor só que extremamente poderoso, reconhecendo quase que 100% das linguagens existentes e tendo o custo de apenas 20mb de espaço, sem contar que é totalmente configurável, mas se por acaso eu estiver em um ambiente que seja ausente de vim eu posso ver com um outro editor e ler o código e nessa corrigir os erros possíveis, mas aproveitando da organização do mesmo.
"Contudo é acreditado que atualmente existem diversas camadas com esse objetivo, de forma que você assim como todos nós tentamos abstrair toda essa condição, mas será realmente que a resposta esteja na abstração?"
Se você precisar cavar um buraco, um grande buraco, como você irá fazer ? Cavará com as mãos, com uma pá ou uma escavadeira ?
Acho que você irá preferir usar uma escavadeira. Mas há 3 mil anos atrás utilizariam as mãos. A diferença de tempo de produção deste burado, entre hoje e 3 mil anos atrás, seria um pouco diferente, não ?
Pois é, a abstração, neste caso, foi benéfica e muito necessária, não concorda ?
Realmente uma escavadeira é uma boa ferramenta isso é inegável, faz com que o trabalho de um dia se reduza a apenas algumas horas, mas escavadeiras são direcionadas a todas as situações?
Será que nessa situação abaixo eu deva usar uma escavadeira para resgatar pessoas que ficaram soterradas?
http://g1.globo.com/Noticias/Rio/0,,MUL219034-5606,00.html
De uma forma ou de outra tenho que cavar um buraco para savar pelo menos os corpos, mas se eu usar a escavadeira é mais provavel que eu terminer o serviço mais rápido, contudo ninguém sempre saia vivo.
Como disse uma escavadeira é realmente poderosa e útil, contudo use-a para serviços que sejam realmente necessários de uma escavadeira, pois certos serviços é melhor usar um pincel como ocorre na arquiologia, quer dizer nem é com a mão e muito menos com a pá, mas com o pincel que escavado a poeira para evitar que objetos pré-históricos sejam danificados, imagine você pincelando algo que está a 1.35 metros do solo, se baseando no primeiro achado, que audno é encontrado você só pincela, será que é melhor usar uma escavadeira aí?
Uma ferramenta poderosa demais só deve ser usada em momentos que necessite de seu poder, pois caso contrário para quê andariamos a pé se temos carro para andar em todos lugares?
As cenas de Naufrago, onde ele precisa aprender a acender fogo, entre outras, mostram bem este conflito.
Realmente é um ótimo filme, se o Wilson nunca tivesse surgido, concerteza o protagonista teria enlouquecido, as vezes faço a mesma coisa, olhe, ele teve dificuldades realmente para fazer essas coisas, mas as fez, mas agora imagine se ele fosse incapaz de conhecer como poderia transformar a energia de tração de dois gravetos em fogo? Isso se chama sobrevivencia e nem todos sabem disso, se fosse outro talvez tivesse morrido, se lembra da parte do dente?
"Ou mesmo se é necessário refazer tantas as vezes as mesmas coisas, como vem ocorrendo? Analize, metade das aplicações atualmente existentes quando são pesadas são chamadas de forma mais peculiar como robustas, ou mesmo dizendo serem eficientes, mas será que a eficiencia de ferramenta é derivada de sua complexidade?"
A criação de aplicações envolve um número gigantesco de variáveis. Você não pode pegar um resultado específico e querer atacar uma variável específica.
Eu nunca disse que a complexidade de uma ferramenta faria com que ela fosse eficiente. Quanto ao contrário, é uma realidade momentânea, em um futuro próximo surgirão ferramentas simples e eficientes. Aguardemos.
Isso concordo com você, mas o simples nunca significa que seja fácil, as vezes é mais fácil fazer uma ferramenta extremamente complexa e robusta que fazer uma ferramenta simples e reusável, se lembra do que eu disse sobre o problema da abstração? Esse é um dos fatores, hoje em dia observe a quantidas de frameworks que estão surgindo, por exemplo, cada um mais complexo que o outro, no que resulta em um sério problema de foco.
"Vi por deveras vezes programas estremamente mais simples aos quais são conduzidos por outras ferramentas que fazem uso de sua funcionalidade, nesse caso as IDEs antigamente funcionavam assim, quer dizer tinha um compilar, um editor, um debugador e um make, ao qual geravam toda a idéia de projetos, dessa forma cada ferramenta evoluia a seu objetivo e eficácia, contudo a idéia integrada dos projetos atuais geraram que tudo isso deveria integrado a um único ambiente dessa forma sendo o ambiente o real desenvolvedor?"
Seu texto está muito confuso. Mas vou tentar comentar algo.
O que você fazia nesta época de Clipper, levando 2, 3 dias na melhor das hipóteses, hoje o .NET faz em 5 minutos. É como o buraco, as mãos e a escavadeira.
Se você fosse fazer um sistema de tempo crítico, você usaria o .NET para isso? Ou usaria o .NET para fazer um sistema que fosse rodar em um robo industrial? Nesse caso vale novamente a idéia da arquiologia, vai usar o pincel para trabalho.
Nesse caso valeria ou usar uma base embarcada que pudesse ser remodelada para sua aplicação ou você faz a sua, mas de uma forma ou de outra teria que focar diretamente o código, o mesmo ocorre muito na Web, onde o grande trabalho é que o desenvolvedor fique observando e analizando o código que está administrando.
"Vemos isso pelos RADs que visam tornar o trabalho em código a parte do trabalho de desenvolvimento, mas apesar de sua eficácia, eles geraram um grade male, onde o código em si se tornara mal projetado e você como eu e outros ficavamos a depender do ambiente ao invés de nossa real competencia."
O conceito de RAD mudou por completo no ano de 2002 com o .NET. Você ainda está ligado ao conceito de RAD anterior ao ano de 2002
Eu vi os dois conceitos de RADs que existem é verdade que nesse ambito o RAD de código tem surgido o que é verdade, e eu até que gosto do conceito de RAD de código, contudo tenho que considerar que isso está preso a um framework para que possa haver tais benefícios, o que desconsidera muito o uso de outras tecnologias.
Para mim como eu disse: No Naufrago ele passou por aquelas difículdades e se por acaso ele desconhecesse o que sabia, como ficaria?
Quanto a competência, você prefere depender da competência de suas mãos para fazer o buraco ou da competência da escavadeira ? Voltamos ao caso do Naufrago.
Para mim prefiro depender da competencia da necessidade do momento, se caso eu precise mudar uma linha só mudo uma linha e depois dou um make, mas se caso eu tenha que entregar uma aplicação que necessite de controle de todos ambitos, o nível de projeto seja catastrofico e que precise ser rápido sem dar importancia realmente na integridade do mesmo, como no caso uma ferramenta de locadora ou mesmo um frontend totalmente grafico para um banco, então fico com a ferramenta pesadona, mas se eu tiver em torno de uma semana acho que ainda da para usar reaproveitando tudo que tenho de outros projetos que criei, quer dizer eu reuso linhas de código.
Mas isso é variável, vai depender tanto do conhecimento do desenvolvedor em escolher as alternativas mais simples e benéficas quanto o impressionar do cliente em relação a custo/benefício, muitas vezes temos que saber qual será a nova área de atuação e todo mundo hoje em dia sabe que as principais áreas de atuação ou são Web, Games e ou desenvolvimento de sistemas para aplicações específicas, o que resulta novamente em que vai ter que mecher no código ou catar na net para isso.
Já com Games você pode comprar uma enginer de desenvolvimento ler uma porrada de livros sobre desenvolvimento e teoria sobre jogos, ainda procurar descobrir qual será a melhor alternativa para ter o máximo de desempenho do mesmo; ou pode começar a estudar desenvolvimento TCP/IP técnicas de cliente-servidor, administração de sistema Web e uso de várias técnicas para tornar suas páginas Web mais rápidas agregando assim várias técnologias de trabalho, sem contar que precisará conhecer da analogia sobre segurança; e ou pode começar e estudar um pequeno e bom assembly usando um sistema embarcado, estudando consigo a linguagem C para desenvolvimento de sistemas espacíficos. Pelo que eu saiba são esses ramos que estão se sobressaindo atualmente, ainda tem o de Inteligencia Artificial, contudo estudar uma linguagem de quinta geração é meio complicada.
"Se analizar perceberá também que atualmente as exigencias de hardware se tornam irrelevantes aos benéficios, quer dizer se usar um processador Dual Core em um Windows Vista terás o mesmo desempenho que um Semprom em um Windows XP, gerado pelo fato de boa parte do sistema ter adotado uma nova metodologia e recontrução, que atualmente gera tal incompatibilidade. Mas se associar isso ao fator ferramenta, então será realmente necessário que uma ferramenta tenha que lhe consumir recursos?"
Desculpe, o texto está confuso, por exemplo, quando fala de incompatibilidade.
Analise a usabilidade e as possibilidades de aplicações WPF e Silverlight, tal como o http://www.tafiti.com
Desculpe, mas como estou usando o Ubuntu e essa página nem se quer abriu eu simplesmente ignorei, pois ter que ir para o Windows 2000 baixar o .NET runtime e ainda pega o pacote do Silverlight é perder muito tempo, e para mim é meio que desnecessário e prefiro evitar instalar aplicações no Windows 2000 aqui de casa a menos que esteja completamente certo de sua necessidade para o uso natural em casa.
Sei que o Silverlight pode ser muito bom, mas o flash ainda existe e faz a mesma coisa que o Silverlight faz, apesar que o Silverlighte tem outros benefícios, contudo o JavaScript+Ajax pode resolver parte disso ou mesmo o Flash.
"O mesmo ocorre com a IDE/RAD Visual Studio.NET que apesar de ser impressionante, acabo por desconsiderar os desenvolvedores que usam essa ferramenta, por motivos que quando a mesma ou o ambiente emprega os modelos de perdas, simplesmente ao invés de reaproveitarem e corrigirem o erro, por deveras vezes vejo refazer tudo novamente, usando o Drag and Drop, isso é certo?"
É certo você culpar a escavadeira pela incapacidade do operador de controla-la?
Se a escavadeira quebrar, que o que eu havia dito, vai ficar parado? Nada disso chama a rapaziada cada um com sua pá e comece a cavar. Isso acontece quando se está fazendo um trabalho urgente, comparando isso a meio de desenvolvimento creio que como havia dito "matar uma barata com uma bazuca" é o termo que pode ser empregado a tal situação, e o que eu contei foi que o pessoal deixa de observar o que está de errado no código para usar o Object Inspaction (ou sei lá que aquilo se chame) para fazer tudo por você o que é um risco, você deve saber que para introduzir um banco de dados na sua aplicação nem é necessário usar o AddBD pois só são apenas três linhas de código para introduzir um banco de dados, com a vantagem que você qual foi o código.
"Sei que a ferramenta é poderosa, mas e você, ou eu e ou todos? Será que só é capaz de trabalhar apenas nessa ferramenta?"
Nunca disse isso. Você sempre pode fazer o buraco com a mão, não é?
Sei disso, mas ao invés de mostrar como poderia fazer no Visual Studio, poderia mostrar como seria no código? Ou mesmo esquecer por um segundo o arrastar de um botão para usar um new button?
Mas você quer ?
Eu quero que a faculdade deixe de ter os problemas de vírus, de bloqueios, de mostrar apenas o básico do básico, de eu ficar preso aos assuntos da faculdade e apresentar as novidade em termo de uso com outras tecnologias aplicáveis.
E também ao problema que temos atualmente o famoso POG que apesar de ser uma piada está se tornando uma realidade.
Sem criticas a Microsoft, sei que ela tem seus méritos, mas queria que deixasse de ser tão desleal e passar a trabalhar da maneira correta, estou cansado de comprar um mp3 e saber que ele é totalmente fechado, caramba eu paguei o troço, mas só pagar o direito de usar é irritante, já basta a quantidade de coisas que se baseiam nisso.
E por último quero uma tecnologia realmente confiável, nada desses meia boca que se tem por ai, se reparar muitas arquiteturas de estão sendo feitas de forma mal projetadas e você paga cara por isso, pois paga por um produto que já está defeituoso.
E também quero usar o máximo de minha máquina, o máximo de meu sistema a ponto de poder otimiza-lo de acordo com a necessidade, ou mesmo ter os efeitos do Vista em um Semprom 64bits 3000+ com placa de nVidea GeForce 5200 e 512 de ram DDR coisa está que só é possível de ver em um GNU/Linux no caso o Ubuntu, por causa do Compiz e agora no Eee PC que é um pc de baixo custo que também roda o Compiz de forma eficiente.
"Como já disse se algo é de dificil explanação então considero de dificil aceitação, da mesma forma que repercutiu os modelos de programação, por exemplo:
A programação procedural ainda se mantém por apenas um motivo, ela é simples; a Orientação a Objetos apesar de seu poder de reuso está se provando que é melhor apenas aprovetar de sua metodologia ou mesmo introduzi-la em uma VM, já que a mesma se mostrou ineficiente em muitos casos, onde a programação se tornou rápida no desenvolvimento, mas lenta na atividade e além de tornar os projetos cada vez mais complicados, da mesma forma que a POA (Programação Oreintada a Aspectos), o mesmo também ocorre com a programação que gera código como o HTML, ou mesmo esse Linq que serve para abstrair o código SQL que já é simples, será isso meio perigoso?"
Você misturou inúmeras questões neste tópico e o texto ficou mais confuso.
A OO demorou a ser aceita primeiro porque a OO depende da existência de bancos de dados 100% orientado a objetos e isso nunca funcionou tão perfeitamente, segundo que as regras de mapeamento objeto/relacional não são claras e levou-se muitos e muitos anos até que alguns autores se arriscassem a fazer afirmações nesta área. Em momento algum significa que ela não seja melhor do que a estruturada.
A POA é um complemento da OO, mas que ainda não encontrou um ambiente técnico adequado para sua existência, por isso só existe no meio acadêmico. Porém os mais observadores já devem ter visto que desde a versão 1.0 do .NET a Microsoft tem inserido recursos de POA fake no .NET, que funcionam muito bem, tanto que o ASP.NET Ajax da Microsoft usa e abusa maravilhosamente deste recurso.
Quanto ao Linq, precisaria analisar todas suas implicações e até mesmo o Entity Framework para entende-lo melhor. Quanto a geração de HTML, isso é uma gigantesca simplificação do ambiente do ASP.NET.
De qualquer forma, a escavadeira gera um buraco. Você prefere gerar o buraco com a mão ?
Se eu for um arquiologo eu gero o bucaro com o pincel, lembra o POA está de dificil aceitação, pois é dificl pra caramba de entender sua utilidade, quer dizer você programa para programa seu código para gerar código para seu código, é muito dificl entendir isso, o mesmo ocorreu com o POO que é uma abstração baseada no modelo de classes do reino animal, vai explicar isso para alguém, é meio chato, todo mundo sabe disso, quando você mostra fica mais simples para entender o POO, contudo o POA nem mostrando o pessoal endende direito, por isso sua dificl aceitação no exterior, o POA é mais usado aqui, por incrivel que pareça.
"Os unix se mostraram eficientes por causa da simplicidade que resultou em seu reuso, quer dizer programas bem espécificos em suas tarefas e com grupos focados nelas, onde cada grupo faz o que sabe fazer de melhor, o que resulta geralmente em sua estabilidade, temos ferramentas hoje que são consideradas plenamente estáveis, um deles é o TeX e o LaTeX que uso para meus trabalhos, ou o make que também é simples e poderoso, entre outros aos quais que se fossem citados nem seriam consideradas suas utilidades como no caso o VIm, o echo, o cat, o bash, o Python, entre outros. Dessa forma provando que a simplicidade e especificabilidade da ferramenta é mais importante que um todo integrado."
Dos que você citou, só conheço o Python. Me deixou em grande dúvida se você está falando sobre TI, desenvolvimento ou misturando tudo.
Eu falo num contexto geral, contudo o de desenvolvimento é o que é predominante para mim.
Quanto ao Python, tenho alunos que conhecem Python, Java, PHP, ASP Clássico, entre diversos outros ambientes e dia a dia cada um fica cada vez mais maravilhado com a produtividade gerada pelas características do framework .NET.
Eu também fiquei impressionado quando estudei .NET, mas depois de um tempo minha concepção mudou completamente, pois apesar dos benefícios, creio que o problema esteja em ser apenas um sistema muito privativo, ao qual sua alteração faz com que altere todo o seu ambiente prejudicando os usuários. Por essa razão eu acabei deixando de lado o .NET.
"Em outros casos é realmente difícil compreender como uma ferramenata que só tem apenas uma utilidade se demonstra eficiente para um serviço, contudo devemos considerar que tal ferramenta será utilizada por outras ferramentas, como acontecia com as IDEs no passado, e o que tornara o trabalho realmente produtivo, é só observar a história da tecnologia, atualmente estamos voltando para o que fora rejeitado, por exemplo os computadores são digitais, mas os computadores quanticos que estão começando a surgir são totalmente analógicos, o que prova tal regressão (estou um pouco ausente de links para a noticia no momento, mas caso eu a encontre postarei aqui), o mesmo ocorre nos sistemas, também onde foi-se criado que seria melhor usar e abusar da OO, contudo a OO está apenas sendo melhor aproveitada em uma VM e se for para Web, quer dizer ela realmente encontrou seu foco, podemos ainda considerar a separação entre o código do designer que atualmente também está sendo novamente agregada."
Alguns pontos estão difíceis de entender.
A parte de granularização de ferramentas eu expliquei e demonstrei na palestra sobre windows server 2008 aqui no Rio, na qual falei sobre cmdLets e PSCmdLets no PowerShell, ou seja, muito voltado para infraestrutura.
As afirmações sobre onde OO está sendo melhor aproveitada estão mal explicadas e analisadas (vide clickOnce) bem como os objetivos da VM. Separação entre código e design está sendo aplicada em ambiente windows, com grandes perspectivas, vide WPF.
O que eu quero apresentar é que cada coisa só possui uma dada vantagem, nada é totalmente predominante, por isso que falei dos pc quanticos, dessa forma como disse um professor de Bancos de Dados da faculdade, nenhuma técnica é ruim, apenas temos que saber quando usa-las.
"Mesmo com os benéficios gerados pela Microsoft, ela tem que realmente escolher seu foco ou então vai acabar como outras empresas, pelo que já sei sobre ela, ela está investindo pesadamente no seu XBOX 360 onde tudo está se focando realmente no XBOX 360 além de outros projetos de hardware que ela anda fazendo, contudo tudo está mais centralizado nesse video-game, mas se ela realmente focar em uma área verdadeiramente então vai ocorrer um fenômeno interessante, por exemplo se ela focar no video-game, então as empresas de hardware vão realmente se espandir, já que muitas nem aguentam mais o padrão 8086 (diga-se a Intel de passagem), vai virar zona? Vai, mas nem tanto, pois as tecnologias estarão mais abstraídas do hardware (se lembra das VMs, pois esqueça, vai ser o procedural mesmo que vai usar e compilado, no caso o C), ou mesmo o total crescimento de certas empresas, já que vão investir no que fazem de melhor."
Video-Game ?
E a TV Digital, não conta não ?
Essa ai é novidade.
A importância do foco está diretamente relacionada ao tamanho de uma organização.
"Oi cresce que é uma beleza e foca apenas a telefonia celular se reaparar tudo nela gira em torno de seu celular, até mesmo ter comprado a Telemar só foi apenas para haver mais aceitação de seu celular até porque todo vê os beneficios que ela oferece para celular, o Oi pago também é um desses benefícios, tudo nela é telefonia, mas o que foca a Microsoft?"
Um pouquinho de história torna-se necessário. Não cariocas normalmente fazem essa confusão. Oi e Telemar sempre foram uma empresa única, a divisão ocorreu por questões de monopólio de mercado e muita briga com a concorrência e nem por isso deixaram de usar práticas abusivas no mercado. Portanto, Oi/Telemar envolvem telefonia celular, telefonia fixa, acesso a internet discado e banda larga, hosting (isso ai), fornecimento de links, enriquecimento do Lulinha com uma TV de jogos, entre milhões de outras coisas que desconhecemos.
http://portalexame.abril.com.br/financas/m0134435.html
Depois pego os detalhes do passado com o pessoal de lá.
"Poderia dizer a facilidade, contudo seria quase que mentira, pois ela está tentando circular tudo que pode sem realmente fazer um foco, observe o sistema operacional, só usa um sistema de arquivos, ainda tem também um banco de dados, ou uma IDE de desenvolvimento, ou servidor, ou desiner, e todo mundo saber que nada é alto suficiente, pois se fosse, então para quê teria empregados? Ou será que ela foca o Desktop? Mas porque está querendo foca a Web também agora? Eu poderia dizer diversas críticas, como geralmente faço, mas as vi que eram tolices, perguntas geralmente são respostas que trazem o que é óbvio."
Mas uma vez, o assunto não está claro. Mas interoperabilidade virou lei na Microsoft. Windows Server fala com Linux na boa e (espaço Jabá) qualquer faculdade que queira formar um interoperability day, com funcionários diretos da Novell e da Microsoft mostrando a interoperabilidade entre seus ambientes, pode entrar em contato comigo que organizo isso, sem custo algum.
Eu falei que qual é o foco da Microsoft, o que ela quer realmente? Ela quer tudo?
"Você citou que trabalhar diretamente no código seria quase que loucura, contudo todos nós sabemos que o que gira o sistema é o código e o código foi criado para simplificar o trabalhar com os bits diretamente que eram impossóveis de serem entendidos, o que resultou no assembly, contudo o assembly tinha dois problemas muito sérios, um seria a sua exclusividade de arquitetura, quer dizer se o comando AX em outra arquitetura for EAX então ferrou, todo o trabalho no lixo, e outro motivo era que é simples demais, quer dizer um comando por linha, nem laço de iteração existe no assembly, como por exemplo, para tem o jump (para pular), ja (pule se for maior), jb (pule se for menor), je (pule se for igual), jne (pule se for diferente, e além de outros jumps), cmp (compare para registradores, no caso cada comando precisa sempre está com pelo menos um registrador, e no processador você tem quatro, caso seja um 8086, se for outro então ferrou) e tem que usar isso para fazer um for por exemplo, o if também, nesse caso se torna extremamente custoso e inviável, por essa razão foi-se criadas as famosas linguagens de alto nível, no caso o C que foi projetada e analizada para ser a mais próxima dos benefícios do assembly gerando geralmente códigos altamente otimizados e benéficos, mas como C foi projetado para compiladores, muitos dizem que se tornar uma linguagem difícil, contudo ela pouquissimas palavras chaves, sendo necessário apenas que estude para saber usa-la, ao contrário do Java e .NET em geral que atualmente é um framework estremamente complexo e trabalhoso em desenvolvimento, o que na realidade deveria ser simples, como já foi dito por outros dar a sensação de que você está matando uma barata com uma bazuca, será que isso é realmente necessário?"
Usar as mãos, usar uma pá ou usar uma escavadeira para cavar um buraco.
Depende do serviço, se for arquiologia vou usar um pincel, se for resgate de soterrados, vou usar ou as mãos ou a pá, se for para construir um metrô eu uso uma escavadeira, com mãos, e pás, para saber se o solo está realmente seguro, quero evitar perder a escavadeira.
Se for para enterrar um difunto eu uso uma pá mesmo é mais discreta.
Comparar o antigo C com os recursos do .NET é o mesmo que comparar o tempo de fazer um buraco com a mão com o tempo de fazer um buraco com uma escavadeira.
Realmente, mas lembresse o C existe e vai continuar existindo pois foi planejado, e é muito dificil que essa linguagem seja realmente substituida, pois é usada para elaborar sistemas, pergunte ao pessoal da Microsoft em que linguagem eles usam para as áreas internas do Windows. Sem contar que ela é a primeira linguagem de alto nível, da mesma forma que assembly ainda vai continuar a existir.
"Eu já contei porque é inviável usar assembly, então será que devemos novamente cometer o mesmo erro, pois os assembly atuais tem mais de mil comandos, será que realmente precisamos de todos esse comandos em linguagens de alto nível? Será que a melhor escolha seria realmente ago que fosse simples? Temos que para com essa de dar um tiro no próprio pé a toda hora, temos que saber em que cada tecnologia pode ser melhor empregada, pois sabendo o seu foco, a sua complexidade se torna irrelevantem, pois será apenas aproveitado o que lhe é benéfico no seu foco, esse é o caso do OpenGL, muitos acham que é complicado, mas é bem simples, ou mesmo SDL, onde o pessoal só aproveita a parte de controles dele, quer dizer você usa o que lhe for útil, no caso de um framework você se depende totalmente do framework, isso bom? É facíl, pois seus estudos só se focam em um lugar, contudo isso benéfico?"
Que tal se você, em um único dia, contar com quantos objetos você lida durante o dia ?
eu lido com 935 ebooks, 7013 artigos que pego na net, 13400 pacotes instalados no sistema e 5 projetos que estou desenvolvendo.
Dos quais estou usando mais o VIm, o LaTeX, o TeX, o GCC, GDB, o make, o Firefox, o Epiphany, o Gimp, o Blender, o BrOffice, o Transcoder, o TVtime, o mencoder, o Mplayer, o ffmpeg, o Synaptic, o aptitude e outras coisa que nem estou lembrado no momento.
Você preferiria continuar usando pau e pedra como a 5.000 anos atrás ?
Se eu precisasse de fazer fogo ou mesmo cozinhar uma fejoada sem fogão e fogo vide a inteligencia e criatividade, aprendi isso em uma escursão escolar, onde o pessoal reaproveitava todas as alternativas para resolver problemas.
Em que andar você mora/trabalha? Você usa elevador ou escada para chegar em sua residência/trabalho? Então você depende dele, certo? Claro que se faltar luz você pode usar a escada, e o mesmo acontece na tecnologia, mas você gosta?
Na realidade tenho um pouco de claustrofobia, fico agoniado com lugares muito fechados, dessa forma eu dou total preferencia a escadas, em um dado prédio eu subia 8 andares em escadas, a sim também gosto muito de andar, até porque ando até o centro cidade onde a distancia é em média 12 km.
"Sei que diferente do .NET, Visual Studio e Windows, tecnologias são difícieis para aprender, eu tenho que tar o tempo todo administrando, pois a ferramenta deixou de ser auto suficiente, o Ruby on Rails é puro código, nem RAD se tem para ainda (ou a Borland já lançou), eu tenho que está adminstrando, trabalhando, resolvendo soluções? Isso bom? Isso é difício, contudo é trabalho. Mas isso é chato a ferramenta realmente no máximo diz que tem coisa errada e eu tenho que resolver a bronca, isso é ruim? Talves sim, mas pelo menos ela deixa de ser uma caixa preta e eu ao invés de oferer um produto eu ofereço um serviço, quero dizer acabo por me tornar um profissional mais caro, já que vale-se o dito do especialista, eu cobro 1 real, os outros 99 é pelo que estudei e focando assim a trazer a solução que o cliente precisa, como foi dito, nesse caso se tua confiança e analize de benéfico e necessidade é conhecida por ti, então és capaz de resolver o que o cliente quer sem ao menos ter que lhe indicar a outro prestador de serviço é claro."
Mais uma vez, confuso.
O conceito de caixa preta é anterior a 2002. Em 2002 o conceito de RAD foi alterado, conforme citei.
O que expliquei foi sobre manutenção de sistemas, quer dizer o uso de um RAD e base fechado para tudo, sem contar a quantidade de camadas muitas vezes desencessárias que estão surgindo hoje.
Se no RoR você levar 10 dias para fazer uma solução e no VS eu levar 1 dia, sendo que ao final ambos cobrarmos um valor X, quem está cobrando por mão de obra realizada e quem está cobrando pelo conhecimento adquirido?
Quanto ao tempo de execução, aceito desafios práticos.
Como uma vez ouvir de um modelador 3D, ele disse o seguinte, eu posso fazer um modelo completo que levaria 7 dias em apenas uma hora, contudo esse modelo terá tantos problemas em relação ao vertices que levaria em média 13 dias para corrigi-los.
Dessa forma se você tem um profissional que demora 10 dias para fazer uma aplicação, concerteza essa aplicação estará em total dominio, quer dizer ele vai saber o que fez, vai saber monitorar bem a manutenção da aplicação e vai lhe garantir que está entregando um produto de qualidade, já que ele vai saber o que fez e também o que pode melhorar caso você queria algo na aplicação, já o que fez em uma hora, provavelmente nem sabe o que fez, pois que quem foi o programa ele apenas modelou algumas coisas e foi empurrado uma porrada de código que é incompreenssível ao entendimente, de difício manutenção e muita dor de cabeça.
"Atualmente temos tecnologias extremamente eficiente que quando juntas para uma dada solução é algo que dura anos sem ao menos ter que está o tempo todo trocando, mas apenas melhorando e corrigindo falhas."
O que faz uma tecnologia ser trocada não é a tecnologia, mas a evolução do mercado.
Então qual será o motivo dessa repercução toda de um sistema que antes só era ouvido Windows e agora temos Ubuntu, e uma porrada quando conhece, ou mesmo os conceitos de serviços de contratação de pessoal dessa novamente, ou então a revisão de tecnologias que eram antiquadas.
O mercado relamente move o mundo contudo até certo ponto, pois quando alguém encontra uma falha ninguém é bobo em seguir no erro, o pessoal hoje que evitar despercício de mão de obra, quer que seja agilizado de forma que vá ser feito apenas uma vez e o resto seja manutenção, sei que muitas coisa que eu disse você vai discorda, pois está certo, você tem seus certificados e tem que defende-los, mas o que está sendo dito considere uma prova de que tem que colocar argumentos, pois além de mim terás um monte de gente que vai falar muita coisa, coisas que nem se quer ouvistes falar na vida, como citei, quer dizer sei que é seu dever e profissão e por isso digo, boa sorte, mas também falo, o mundo sempre dá voltas e todas essas voltas são caminhos fechados que fazem novamente o regresso de antigas idéias e conceitos até então ultrapassados, para avaliar os que foram cometidos e como melhorar a capacidade técnica e progressiva de comprimisso, e na tecnologia isso é mais rápido ainda, então boa sorte com o que sabe e espero que responda com capacidade e claresa em respeito como havia feito anteriormente.
Oi, Cwars !
"Quando eu estudei primeiramente a PPE (Programação Procedural Estruturada) eu a considerava extremamente simples até porque foi de facil compreenção, contudo meus estudo ficaram prejudicados por ter iniciado em Pascal, e quando passei para o Object Pascal (no caso Delphi) a minha compreenção sobre a POO fora prejudicada, já que a idéia do Object Pascal sobre a POO se torna realmente difícil, sem contar que a ferramenta abstrai demais essa metodologia, apresentando-lhe como uma linguagem, nessa caso eu tive que revalidar todo o meu conhecimento me focando ao estudo de C, que nesse caso inicie com o C Completo e Total que só recomendo apenas como um livro consulta, nada mais. E após meus estudo com C, foi que comecei a compreender o conceito de POO estudando Java e C# (ao qual gostava muito da linguagem C#, era realmente agradável programar nessa linguagem, em sua versão 2.0) o qual compreendir de maneira quase que espontania, tanto o conceito de segurança de código quando o conceito de desenvolvimento e reuso."
Estudar metodologia é uma coisa, estudar linguagem é outra, misturar é fatal.
"Realmente, mas neste caso temos que considerar que o Bloco de Notas pode ser o editor, mas mesmo assim deve ser evitado o editor? Eu uso o VIm para minhas aplicações e estudo que também é um editor só que extremamente poderoso, reconhecendo quase que 100% das linguagens existentes e tendo o custo de apenas 20mb de espaço, sem contar que é totalmente configurável, mas se por acaso eu estiver em um ambiente que seja ausente de vim eu posso ver com um outro editor e ler o código e nessa corrigir os erros possíveis, mas aproveitando da organização do mesmo."
Idem, mas não quer dizer que vou programar sem a ferramenta, nem que vou cavar um buraco com as mãos.
De qualquer forma, permaneço a disposição para qualquer teste de produtividade que deseje realizar.
"Será que nessa situação abaixo eu deva usar uma escavadeira para resgatar pessoas que ficaram soterradas?
http://g1.globo.com/Noticias/Rio/0,,MUL219034-5606,00.html"
Mas você vai usar as mãos ?
Você não pode misturar dois assuntos distintos, do contrário não se chega a lugar algum : Uma coisa são os beneficios das ferramentas altamente produtivas, outra coisa totalmente diferente é a adequação de uma ferramenta a cada caso. São assuntos diferentes.
"Realmente é um ótimo filme, se o Wilson nunca tivesse surgido, concerteza o protagonista teria enlouquecido, as vezes faço a mesma coisa, olhe, ele teve dificuldades realmente para fazer essas coisas, mas as fez, mas agora imagine se ele fosse incapaz de conhecer como poderia transformar a energia de tração de dois gravetos em fogo? Isso se chama sobrevivencia e nem todos sabem disso, se fosse outro talvez tivesse morrido, se lembra da parte do dente?"
Mas ele foi incapaz de conhecer, de fato ele não conhecia as regras sobre como fazer, pelas quais, por exemplo, era necessário um fluxo de ar. Ele redescobriu isso por acaso e este fato não invalida toda a tecnologia moderna que ele esteve utilizando nos anos anteriores e posteriores.
"Esse é um dos fatores, hoje em dia observe a quantidas de frameworks que estão surgindo, por exemplo, cada um mais complexo que o outro, no que resulta em um sério problema de foco."
Frameworks com problema de foco ? Se seguir esta linha de raciocínio os sistemas operacionais também estariam com problema de foco.
"Se você fosse fazer um sistema de tempo crítico, você usaria o .NET para isso? Ou usaria o .NET para fazer um sistema que fosse rodar em um robo industrial? Nesse caso vale novamente a idéia da arquiologia, vai usar o pincel para trabalho."
1) Sim, perfeitamente, ele tem todos os recursos para isso.
2) Sim, perfeitamente. Recentemente apresentei o MS Robotics a um aluno que cria robôs industriais e ele achou simplesmente fantástico. O MS Robotics é um complemento ao .NET para esta finalidade.
"Nesse caso valeria ou usar uma base embarcada que pudesse ser remodelada para sua aplicação"
Windows CE rodando .NET
" o mesmo ocorre muito na Web, onde o grande trabalho é que o desenvolvedor fique observando e analizando o código que está administrando."
Você não pode generalizar, chamando de "web" as características técnicas oferecidas por uma pobre ferramenta de desenvolvimento específica.
"Eu vi os dois conceitos de RADs que existem é verdade que nesse ambito o RAD de código tem surgido o que é verdade, e eu até que gosto do conceito de RAD de código, contudo tenho que considerar que isso está preso a um framework para que possa haver tais benefícios, o que desconsidera muito o uso de outras tecnologias."
Então você está dizendo que prefere não usar os frameworks, o que significa cavar os buracos com as mãos ou, em outra interpretação, re-criar toda a funcionalidade de cada roda de carro a cada novo sistema que desenvolve, é isso ?
"Para mim como eu disse: No Naufrago ele passou por aquelas difículdades e se por acaso ele desconhecesse o que sabia, como ficaria?"
Ele desconhecia, conforme o filme demonstra. Ser capaz de descobrir foi puro acaso.
"Para mim prefiro depender da competencia da necessidade do momento, se caso eu precise mudar uma linha só mudo uma linha e depois dou um make, mas se caso eu tenha que entregar uma aplicação que necessite de controle de todos ambitos, o nível de projeto seja catastrofico e que precise ser rápido sem dar importancia realmente na integridade do mesmo, como no caso uma ferramenta de locadora ou mesmo um frontend totalmente grafico para um banco, então fico com a ferramenta pesadona, mas se eu tiver em torno de uma semana acho que ainda da para usar reaproveitando tudo que tenho de outros projetos que criei, quer dizer eu reuso linhas de código."
Você mistura no assunto dois temas completamente distintos e que necessitam de abordagens distintas. Um é o uso ou não de ferramentas RAD e o outro a adequação da ferramenta a cada necessidade do momento.
Se você precisa alterar apenas uma linha, é porque a aplicação foi criada antes, e se foi criada antes, quanto tempo levou-se para criar a aplicação ? Você prefere levar mais ou menos tempo para isso ?
Você reaproveita o que criou em projetos anteriores. Mas o framework não é exatamente isso, com a vantagem de ser a criação unificada com a contribuição de inúmeras pessoas, garantindo uma integridade muito maior do que algo criado por um único indivíduo e dispensando que dois indivíduos distintos tenha que, cada um por si, criar funcionalidades que se tornarão redundantes entre os dois ?
"Sei que o Silverlight pode ser muito bom, mas o flash ainda existe e faz a mesma coisa que o Silverlight faz, apesar que o Silverlighte tem outros benefícios, contudo o JavaScript+Ajax pode resolver parte disso ou mesmo o Flash."
Está fazendo uma análise superficial demais. Precisa se aprofundar na tecnologia para poder analisa-la.
"Nada disso chama a rapaziada cada um com sua pá e comece a cavar."
Ah, sim, usando uma pá. Mas observe que ainda assim você está evitando usar as mãos e continua usando a abstração...
"chama a rapaziada" significa que enquanto com a escavadeira uma única pessoa estava fazendo o serviço, você intuitivamente já supôs que com a pá você vai precisar de uma "rapaziada" para fazer algo equivalente não é ? Isso quer dizer muita coisa...
"Sei disso, mas ao invés de mostrar como poderia fazer no Visual Studio, poderia mostrar como seria no código? Ou mesmo esquecer por um segundo o arrastar de um botão para usar um new button?"
Afinal de contas, você está falando de produção ou ensino ?
Se está falando de produção, por que vou usar um new button se posso arrastar o botão ?
Se está falando de ensino, então você está criticando todo o ensino de nível superior de engenharia, economia ou outras áreas que incentiva que o aluno use uma calculadora (inclusive HP, essencial para a área de economia), partindo do principio de que 2+2 foi coisa da alfabetização. É isso que você está sugerindo, abolir as calculadoras, inclusive as HPs, utilizada pelo pessoal da bolsa de valores ?
"Eu quero que a faculdade deixe de ter os problemas de vírus, de bloqueios, de mostrar apenas o básico do básico, de eu ficar preso aos assuntos da faculdade e apresentar as novidade em termo de uso com outras tecnologias aplicáveis."
Que uma universidade deve mostrar um assunto profundamente isso é fato. Que deve mostrar inúmeras tecnologias, isso é fato. Já comentei esse tópico várias vezes em outros locais. Mas o que isso tem a ver com o artigo que você está comentando, ai em cima, sobre o lançamento do Visual Studio 2008 ?
"E por último quero uma tecnologia realmente confiável, nada desses meia boca que se tem por ai, se reparar muitas arquiteturas de estão sendo feitas de forma mal projetadas e você paga cara por isso, pois paga por um produto que já está defeituoso."
Desde julho de 2003 o servidor Oracle teve um total de 100 falhas críticas, enquanto que o servidor SQL Server não teve absolutamente nenhuma.
Desde 2003 quando foi lançado o IIS 6 não teve nenhuma falha crítica. Que tal pesquisar quantas o Apache teve neste mesmo período ?
Portanto, quando você fala genéricamente desta forma e ainda coloca o nome da Microsoft no parágrafo anterior, devo imaginar que você está vivendo antes do ano de 2003 ?
"Se eu for um arquiologo(sic) eu gero o bucaro com o pincel"
De forma alguma, você só vai gerar o buraco com o pincel se alguém já houver descoberto exatamente onde cavar. Você não vai cavar o deserto do Saara com um pincel. Lembre-se das cenas iniciais do filme Jurassic Park, nem eles estavam identificando os ossos com pincéis.
Além disso, você está novamente misturando a questão de abstração da ferramenta com a questão de sua adequação a determinada tarefa, assuntos completamente diversos.
"lembra o POA está de dificil aceitação, pois é dificl pra caramba de entender sua utilidade,"
Eu explico claramente a utilidade da POA para meus alunos durante minhas aulas e mostro até exemplos práticos de onde ela JÁ ESTÁ sendo aplicada hoje sem que ninguém tenha percebido. Não culpe a tecnologia pelo fato de você não ter obtido informações adequadas.
"o mesmo ocorreu com o POO que é uma abstração baseada no modelo de classes do reino animal, vai explicar isso para alguém, é meio chato, todo mundo sabe disso, quando você mostra fica mais simples para entender o POO, contudo o POA nem mostrando o pessoal endende direito, por isso sua dificl aceitação no exterior, o POA é mais usado aqui, por incrivel que pareça."
Quanto a orientação a objetos, minha aula sobre OO é uma das que os alunos mais adoram e não teria como não ser uma aula teórica.
Quanto a POA, basta dizer que o ASP.NET Ajax utiliza POA (fake, mas e dai? É adaptação acadêmica ao mercado) desde seus fundamentos mais internos, portanto sua afirmação sobre aceitação está completamente distorcida.
"Eu também fiquei impressionado quando estudei .NET, mas depois de um tempo minha concepção mudou completamente, pois apesar dos benefícios, creio que o problema esteja em ser apenas um sistema muito privativo, ao qual sua alteração faz com que altere todo o seu ambiente prejudicando os usuários. Por essa razão eu acabei deixando de lado o .NET."
Você está falando de que exatamente, versionamento ?
O .NET não mudou praticamente nada entre a versão 1.0 e 1.1. Da 1.1 para a 2.0 é necessário um processo de migração mas é extremamente simples de ser feito, apenas foram acrescentados novos conceitos para sistemas novos, não para os já existentes. Hoje estamos na 3.5 e temos 100% de compatibilidade com a 2.0 sem nenhum processo de migração.
Portanto, se é disso que está falando, se enganou muito.
"Essa ai é novidade."
As técnicas de desenvolvimento para TV digital são mencionadas e explanadas com mais ou menos profundidade em ambiente Microsoft desde 2005.
"Eu falei que qual é o foco da Microsoft, o que ela quer realmente? Ela quer tudo?"
Qual o foco da IBM ?
"Realmente, mas lembresse o C existe e vai continuar existindo pois foi planejado, e é muito dificil que essa linguagem seja realmente substituida, pois é usada para elaborar sistemas, pergunte ao pessoal da Microsoft em que linguagem eles usam para as áreas internas do Windows. Sem contar que ela é a primeira linguagem de alto nível, da mesma forma que assembly ainda vai continuar a existir."
C++, mas boa parte do .NET foi feita realmente em .NET.
Mas afinal, porque mudou de assunto novamente, afinal em momento algum toquei no ponto da existência da linguagem.
"eu lido com 935 ebooks, 7013 artigos que pego na net, 13400 pacotes instalados no sistema e 5 projetos que estou desenvolvendo."
Então você não senta-se para ler ou usar o micro ? Em quantas cadeiras diferentes se senta ?
Bebe água ? De onde ? Em que copo ? Usa elevador ? Quantos modelos diferentes de elevador ? Usa chaves ? Mesas ? Talheres ? Pratos ? Cama ? Toalha ? Travesseiro ?
A lista não vai caber aqui...
"Se eu precisasse de fazer fogo ou mesmo cozinhar uma fejoada sem fogão e fogo vide a inteligencia e criatividade, aprendi isso em uma escursão escolar, onde o pessoal reaproveitava todas as alternativas para resolver problemas."
Mas e dai se aprendeu em uma escursão(sic) escolar ? Ainda assim você não utiliza isso todos os dias.
"O que expliquei foi sobre manutenção de sistemas, quer dizer o uso de um RAD e base fechado para tudo, sem contar a quantidade de camadas muitas vezes desencessárias que estão surgindo hoje."
Uso de RAD não impede nem ao menos dificulta a manutenção de sistemas, é exatamente o contrário, como você pode ver em Video . Quanto a camadas desnecessárias, se alguém produz um sistema mal planejado você não pode culpar a tecnologia por isso.
"Como uma vez ouvir de um modelador 3D, ele disse o seguinte, eu posso fazer um modelo completo que levaria 7 dias em apenas uma hora, contudo esse modelo terá tantos problemas em relação ao vertices que levaria em média 13 dias para corrigi-los."
O que modelagem 3D tem a ver com os exemplos que citei ? Absolutamente nada. Acreditar que o mesmo conceito se aplica de forma igual a duas coisas totalmente diferentes é uma generalização absurda.
"Dessa forma se você tem um profissional que demora 10 dias para fazer uma aplicação, concerteza essa aplicação estará em total dominio, quer dizer ele vai saber o que fez, vai saber monitorar bem a manutenção da aplicação e vai lhe garantir que está entregando um produto de qualidade, já que ele vai saber o que fez e também o que pode melhorar caso você queria algo na aplicação, já o que fez em uma hora, provavelmente nem sabe o que fez, pois que quem foi o programa ele apenas modelou algumas coisas e foi empurrado uma porrada de código que é incompreenssível ao entendimente, de difício manutenção e muita dor de cabeça."
Generalização absurda. Continuo a disposição para desafios práticos.
"Então qual será o motivo dessa repercução toda de um sistema que antes só era ouvido Windows e agora temos Ubuntu, e uma porrada quando conhece, ou mesmo os conceitos de serviços de contratação de pessoal dessa novamente, ou então a revisão de tecnologias que eram antiquadas."
Nenhuma empresa vai colocar a mão no bolso para trocar uma tecnologia só por causa da tecnologia. A tecnologia é trocada por necessidades do mercado, porque o que antes atendia hoje não é bom suficiente.
---------------------
CidadaoCarioca
BufaloInfo
Oi Pessoal
Creio que o cwars confundiu conceitos de metodologia de desenvolvimento,ambiente de desenvolvimento,funcionamento de sistemas operacional e por ai vai a confusão do sujeito.
Em minha humilde opinião alguém que visa questionar conceitos complexos como o que são apresentados no artigo deveria no minimo saber qual a diferença de uma IDE para uma metodologia de desenvolvimento ?
Por isso o icone que foi anexado ao lado do nick desse semelhante foi muito empregado.
Gostei do artigo por desmistificar a questão da Microsoft criar ambientes isolados ou seja que não consigam interagir com outras tecnologias e também por demonstrar que se não haverá barreiras para a criação de funcionalidades gráficas web em aplicações windows e por dizer que a MS pensou em um framework 3.5 que terá integração com os frameworks antigos como 2.0 e o 3.0.
Enfim o artigo está muito bem explicado e ilustrado
Quem não conhece a fundo um assunto deveria ficar calado e não encher o meiobit um espaço que é tão sério como bobagens
Juliana Prado Uchôa
O Linq é uma nova síntaxe que permite que façamos o acesso a coleções de objetos em uma escrita que guarda muitas semelhanças com uma query SQL (para quem duvidava, podem desengavetar o Clipper e o FoxPro! :).
Achei interessante o desengavetar o Clipper e o FoxPro. Mas a cada dia venho observando como o Visual FoxPro 9 continua poderoso, está servindo de exemplo até mesmo para o .Net!
A Microsoft deveria ter levado a sintaxe do VFP também para o .Net, assim como fez com a sintaxe C e VB. Seria mais uma opção, e particularmente uma opção poderosíssima para o .Net.