Fábricas, Linguaguens "novas" e velharias

Eu tava lendo os posts falando sobre fábrica de softwares e sobre um usuário pedindo ajuda em VB.
Eu achei um Artigo muito legal sobre isso:
Elefantes custam a morrer…

Vale apena ler. Já vi isso acontecer também.

Existem linguagens livres do “intemperismo”?
Acho que o C e o C++ são as únicas linguagens livres. Se a lógica de negócios for separada do resto do programa, acho que em C e C++ tudo pode ser readaptado facilmente.

A alguns anos tive uma idéia de fazer um programinha de montagem para converter funções e métodos antigos por funcões e métodos mais atuais, de forma que se ocorressem desatualizações, eu só teria que substituir as funções e métodos em um arquivo que ficasse a parte.
Vcs trabalham pensando na obsolecendia linguagens e das bibliotecas?
Vcs parariam de se atualizar?

Sabe, o grande problema que eu vejo quando este assunto aparece é que normalmente o que impera nestes casos é a completa irresponsabilidade das fábricas e desenvolvedores.
Um sistema antigo feito em uma tecnologia “morta” e ainda em uso normalmente ainda está em uso porque, bem: funciona! Além disto, há nestas bases de código anos e anos e anos de conhecimento agregado que simplesmente é jogado pela janela quando são substituídos por bases completamente novas que, muitas vezes, sequer usam o código legado pra descobrir o real funcionamento da lógica de negócios a ser implementada.

Eu fico de cara com o completo desrespeito com o cliente. Chega uma equipe que não conhece a tecnologia legada, a rotula como horrível normalmente pelo simples fato de não a conhecer (ou principalmente não estar sendo citada no hype momentâneo), ridicularizam a equipe responsável pelo desenvolvimento da mesma e, pra finalizar, o que fazem? Desenvolvem algo completamente novo, do zero jogando fora anos e anos de investimento feito.

Quero dizer com isto que uma base de código antiga deva ser eterna? Não, claro que não: só que se for pra ser substituída, os seguintes critérios tem de ser levados em consideração:

  • Ela funciona?
  • O código novo vai ser de fato superior ou vai ser apenas mais novo?
  • Faz sentido real jogar todo o resto fora?

O Joel Spolsky tem um artigo clássico sobre isto que sempre recomendo quando esta área é tocada:

Concordo contigo nesse ponto, mas iniciar projetos novos utilizando linguagens “mortas” acho arriscado. Por exemplo o programador de VB do post.

Olha a minha visão:
Para a fábrica que coloca um programa em produção, de forma rápida, eu sugeriria as tecnologias mais atuais como frameworks que aceleram a produtividade, pois eles possuem muitas vantagens além de geradores de código.
Mas para produtos que ficarão anos no mercado eu sugeriria simplicidade. Livre dos geradores de código e componentes de terceiros (ou isolálos do sistema), pois futuramente, caso tenham a necessidade de mudar de linguagem, plataforma, ou etc, terão maior facilidade na recostrução do software e não terão problemas com versões de novos componentes.

Umas das coisas que mais me preocupam quando programo é se o próximo S.O. do cliente vai rodar a mesma versão.

Oi Luiz, e eu concordo com você :slight_smile: . De fato, começar coisas novas com tecnologias antigas não é normalmente a coisa mais inteligente a ser feita.

No entanto, meses atrás conheci um caso que foge à regra. Uma empresa daqui de Belo Horizonte especializada no desenvolvimento de aplicativos para gestão comercial que tinha sua base de código toda feita em VB6 resolveu mudar de plataforma. Então começaram um trabalho custoso e longo de pesquisa para escolher de forma correta qual a nova plataforma. A opção mais óbvia era o .net, e logo depois passaram pelo Java, Ruby e diversas outras. Do ponto de vista tecnológico, ir para algo “não VB6” era óbvio pelas razões que você mencionou.

Sabe o que os caras descobriram? O parque tecnológico dos clientes não suportaria .net ou Java e, caso fizessem esta migração, como não teriam condição de manter duas linhas do mesmo produto (VB6 e sei lá o quê), sabe qual foi a opção tomada? Reescrever o sistema em uma nova arquitetura usando… VB6. É uma história interessante, e que vai dar pano pra manga aqui no fórum com gente metendo o ferro nos caras, dizendo que podiam correr atrás de novos mercados e bla bla. E também não acho que deva ser um caso a ser usado como exemplo de forma alguma, mas mostra um aspecto muito interessante: o uso da razão na escolha da plataforma. Os caras vão ter dificuldades em executar o sistema deles no Windows 8,9,10? Provávelmente: mas em contrapartida, viram que se mudassem, iam simplesmente quebrar como empresa.

No final, é tudo uma questão mais de bom senso mesmo. Tirando este caso que citei, normalmente quando vejo alguém desenvolvendo coisas novas com tecnologias não mais em voga, a principal razão é a falta de segurança da própria equipe de desenvolvimento em aprender coisas novas.

[quote=kicolobo][quote=Luiz Augusto Prado]

Concordo contigo nesse ponto, mas iniciar projetos novos utilizando linguagens “mortas” acho arriscado. Por exemplo o programador de VB do post.

Olha a minha visão:
Para a fábrica que coloca um programa em produção, de forma rápida, eu sugeriria as tecnologias mais atuais como frameworks que aceleram a produtividade, pois eles possuem muitas vantagens além de geradores de código.
Mas para produtos que ficarão anos no mercado eu sugeriria simplicidade. Livre dos geradores de código e componentes de terceiros (ou isolálos do sistema), pois futuramente, caso tenham a necessidade de mudar de linguagem, plataforma, ou etc, terão maior facilidade na recostrução do software e não terão problemas com versões de novos componentes.

Umas das coisas que mais me preocupam quando programo é se o próximo S.O. do cliente vai rodar a mesma versão.
[/quote]

Oi Luiz, e eu concordo com você :slight_smile: . De fato, começar coisas novas com tecnologias antigas não é normalmente a coisa mais inteligente a ser feita.

No entanto, meses atrás conheci um caso que foge à regra. Uma empresa daqui de Belo Horizonte especializada no desenvolvimento de aplicativos para gestão comercial que tinha sua base de código toda feita em VB6 resolveu mudar de plataforma. Então começaram um trabalho custoso e longo de pesquisa para escolher de forma correta qual a nova plataforma. A opção mais óbvia era o .net, e logo depois passaram pelo Java, Ruby e diversas outras. Do ponto de vista tecnológico, ir para algo “não VB6” era óbvio pelas razões que você mencionou.

Sabe o que os caras descobriram? O parque tecnológico dos clientes não suportaria .net ou Java e, caso fizessem esta migração, como não teriam condição de manter duas linhas do mesmo produto (VB6 e sei lá o quê), sabe qual foi a opção tomada? Reescrever o sistema em uma nova arquitetura usando… VB6. É uma história interessante, e que vai dar pano pra manga aqui no fórum com gente metendo o ferro nos caras, dizendo que podiam correr atrás de novos mercados e bla bla. E também não acho que deva ser um caso a ser usado como exemplo de forma alguma, mas mostra um aspecto muito interessante: o uso da razão na escolha da plataforma. Os caras vão ter dificuldades em executar o sistema deles no Windows 8,9,10? Provávelmente: mas em contrapartida, viram que se mudassem, iam simplesmente quebrar como empresa.

No final, é tudo uma questão mais de bom senso mesmo. Tirando este caso que citei, normalmente quando vejo alguém desenvolvendo coisas novas com tecnologias não mais em voga, a principal razão é a falta de segurança da própria equipe de desenvolvimento em aprender coisas novas.[/quote]

:thumbup: Entendo.Vc tem razão.
Algo semelhante quando existem vários software trabalhando em conjunto e não dá pra substituir todos ao mesmo tempo.
Acho isso muito foda mesmo. É de chorar. :frowning:
Uma das maiores necessidades é atualizar o windows para não sofrer com nenhum tipo de bug ou ataque.
As atulizações dos windows 2000 e XP acabaram.
Mas como vão ficar quando a próxima versao do windows não suportar estes programas?
Eles devem começar a correr atras pra proxima versão não serem pegos de surpresa.
Eu também acho uma merda termos que nos atualizar tão rapidamente. Ainda mais quando os fontes dos programas costumam ser gigantescos.

Como vcs pensam em atualizar o programa para as proximas versões?
Designer Pattern Adapter?

Se precisar de ajuda, manda uma MP pra mim.

[quote=Luiz Augusto Prado]
Como vcs pensam em atualizar o programa para as proximas versões?
Designer Pattern Adapter?

Se precisar de ajuda, manda uma MP pra mim.[/quote]

Só pra deixar claro, ELES tiveram esta decisão e eu não tenho nada a ver com isto. Uah! ha ha ha ha ha! :smiley:

Mas pensando nos dias de hoje, dado que o modelo desktop tá ficando de lado, talvez a atualização tecnológica não seja lá grandes problemas levando em consideração que sua aplicação vai ser executada no seu servidor aonde você tem controle total (ao menos em teoria). O problema maior ocorre mais do lado desktop que no servidor.

[quote=kicolobo][quote=Luiz Augusto Prado]
Como vcs pensam em atualizar o programa para as proximas versões?
Designer Pattern Adapter?

Se precisar de ajuda, manda uma MP pra mim.[/quote]

Só pra deixar claro, ELES tiveram esta decisão e eu não tenho nada a ver com isto. Uah! ha ha ha ha ha! :smiley:

Mas pensando nos dias de hoje, dado que o modelo desktop tá ficando de lado, talvez a atualização tecnológica não seja lá grandes problemas levando em consideração que sua aplicação vai ser executada no seu servidor aonde você tem controle total (ao menos em teoria). O problema maior ocorre mais do lado desktop que no servidor.

[/quote]

Hehehe. Eu sei… eu to dizendo isso pq esses codigos costumam ser grandes, precisarão de gente pra atualizar.
Nesse caso, não esqueça de mim. :lol:
Já trabalhei com um monte de llinguagem, incluindo ASP e VB.

Esse artigo é cheio de pérolas né?

O fato é, quando o cara propõe reescrever um sistema, o que as empresas enxergam é que as chances do projeto fracassar saltarem para 84% (esse número sobe ainda mais, para 91%, quando nos referimos a projetos de empresas maiores, aquelas com vendas anuais superiores a $500 mi).

Por isso a maioria dos projetos em TI são manutenção de um sistema existente, as chances de se tornar um desastre épico são muito grandes.

Essa questão do “intemperismo” em linguagens como c++ e c como citado é que elas pertencem a um nicho de linguagens chamadas “linguagens de sistema”. A linguagem de sistema é a que é usada para criar tecnologia.
Quantas linguagens de sistema a gente conhece? Eu pelo menos só conheço c++, c e D(essa é muito recente).

c++ e c são antigas quanto ao tempo de sua utilização mas são modernas em termos de tecnologia. Por exemplo 90% do hardware do seu pc(hds, mouse, teclado etc…) são escritas nessa linguagem. A linguagem “objective c” nada mais é que um framework da linguagem c orientado a objetos.

c++ nem preciso dizer. Tanto aplicações, sistemas operacionais, máquinas virtuais, compiladores são escritas com ela. E sempre há updates na estrutura da linguagem onde é necessário, para que ela se mantenha ao nicho das linguagens de sistema e suporte as features mais modernas.

[quote=NickGaspar]Esse artigo é cheio de pérolas né?

O fato é, quando o cara propõe reescrever um sistema, o que as empresas enxergam é que as chances do projeto fracassar saltarem para 84% (esse número sobe ainda mais, para 91%, quando nos referimos a projetos de empresas maiores, aquelas com vendas anuais superiores a $500 mi).

Por isso a maioria dos projetos em TI são manutenção de um sistema existente, as chances de se tornar um desastre épico são muito grandes.

[/quote]

Pra ser sincero não achei o artigo ruim. Achei bem legal as dicas que ele dá.
Claro que o Kicolobo dá uma complementação ao artigo. Eu já vi exemplos disso ocorrerem.

Acho isso bem legal do C e C++.
Me lembro que na época que podiamos criar um disco de boot no diskete e se colocassemos nossos EXEs feitos em C ou C++, eles rodavam numa boa.
Huahuahua saudade desse tempo. As coisas funcionavam mais facilmente.

Alguem sabe algo sobre linguagem D?
Queria saber as vantagens e desvantagens dela quanto ao C e C++.
Um tutorial e o que precisamos pra testar pra ver como é.

[quote=Luiz Augusto Prado][quote=NickGaspar]Esse artigo é cheio de pérolas né?

O fato é, quando o cara propõe reescrever um sistema, o que as empresas enxergam é que as chances do projeto fracassar saltarem para 84% (esse número sobe ainda mais, para 91%, quando nos referimos a projetos de empresas maiores, aquelas com vendas anuais superiores a $500 mi).

Por isso a maioria dos projetos em TI são manutenção de um sistema existente, as chances de se tornar um desastre épico são muito grandes.

[/quote]

Pra ser sincero não achei o artigo ruim. Achei bem legal as dicas que ele dá.
Claro que o Kicolobo dá uma complementação ao artigo. Eu já vi exemplos disso ocorrerem.

Acho isso bem legal do C e C++.
Me lembro que na época que podiamos criar um disco de boot no diskete e se colocassemos nossos EXEs feitos em C ou C++, eles rodavam numa boa.
Huahuahua saudade desse tempo. As coisas funcionavam mais facilmente.

Alguem sabe algo sobre linguagem D?
Queria saber as vantagens e desvantagens dela quanto ao C e C++.
Um tutorial e o que precisamos pra testar pra ver como é.
[/quote]

A linguagem d é mantida pela digital mars. Ela possui coletor de lixo e compila executável nativo.

Aqui a lista do que ela faz
http://dlang.org/comparison.html