Migracao delphi para java

[quote=marcosalex][quote=juliocbq]
A sintaxe do O Pascal é muito boa. Quanto a isso não tenho do que me queixar. Mas é questão de gosto. Sintaxes a lá c (Java C#) são mais dinâmicas, mas pode acreditar que o código suja com muito mais facilidade.
[/quote]

Também penso assim. Além do mais, testar igualdade com o sinal = é muito mais intuitivo do que com ==. E atribuição, := é muito mais intuitivo pra quem lê do que um =.
Mas é questão de gosto. Um código bem escrito em Delphi é muito legível e produtivo, tanto pra desenvolver quanto pra dar manutenção. Já vi vários códigos de grande porte e bem escritos. MVC? O Delphi fazia isso com desenvolvimento três camadas muito antes de entrar na moda. Design Patterns? Quem instalasse as versões enterprise conseguia organizar e ver ele na prática.

O que acontece com o Delphi, é que foi uma das linguagens pioneiras na orientação objeto que pegou volume de mercado. Ele “herdou” os programadores de linguagens procedurais que não tinham noção nenhuma da orientação a objeto. Forçar essa massa gigante de desenvolvedores a mudar o paradigma não é fácil, por isso a maioria deles conseguiu ir pro Delphi mas levando alguns vícios junto.

A vantagem do Delphi foi conseguir um caminho intermediário e direcionar o pessoal a um novo paradigma de programação. Pra uma empresa pequena como a Borland e que vivia em problemas financeiros, foi um ganho e tanto. Infelizmente eles não conseguiram dar o passo seguinte: trabalhar com o código 100% OO sem grandes mudanças no seu software.

Outra coisa, quem usa o Hibernate hoje, carregando as classes POJO, ficou muito parecido com a forma do Delphi trabalhar os componentes TQuery e TTable. Sinal que o Java está conseguindo unir os dois mundos também.[/quote]

Sem falar que tudo isso que vimos no c# seria do OPascal, se a borland não tivesse feito a besteira de não investir no Anders.
para falar a verdade, o delphi era o carro forte da borland, não sei o que aconteceu para ela mudar o foco do investimento no ponto net.

Até concordo, mas é bem mais chato escrever := do que =.

Um código bem escrito é legivel e produtivo em qualquer linguagem, mas em Delphi é mais dificil escrevê-lo por causa de algumas limitacoes. Sendo a principal delas a terrivel referencia circular. Alem da quase nulidade de ferramentas que apoiassem o desenvolvimento OO. O Delphi sempre foi voltado para tratar tudo como cruds simples, e nao da pra por a culpa so nos desenvolvedores nao. Toda a documentacao e toda a literatura do Delphi é organizada dessa forma.

Tres camadas em Delphi? Na verdade normalmente sao duas, interface com o usuario e banco, sendo que as regras ficam ou no botao ou no banco. Pelo menos foi o que eu sempre vi.

Na verdade quem direcionou o pessoal rumo a OO foi o Java e nao o Delphi, o que a Borland fez foi adaptar o pascal a OO pra abracar o paradigma que ja crescia, mas a popularizacao mesmo veio com o Java.

Nao consigo ver essa relacao, a TQuery e a TTable sao a representacao fiel da tabela do banco na memoria, o que vai completamente na direcao oposta da proposta do Hibernate.

[quote=YvGa][quote=marcosalex]
Também penso assim. Além do mais, testar igualdade com o sinal = é muito mais intuitivo do que com ==. E atribuição, := é muito mais intuitivo pra quem lê do que um =.
[/quote]
Até concordo, mas é bem mais chato escrever := do que =.

Um código bem escrito é legivel e produtivo em qualquer linguagem, mas em Delphi é mais dificil escrevê-lo por causa de algumas limitacoes. Sendo a principal delas a terrivel referencia circular. Alem da quase nulidade de ferramentas que apoiassem o desenvolvimento OO. O Delphi sempre foi voltado para tratar tudo como cruds simples, e nao da pra por a culpa so nos desenvolvedores nao. Toda a documentacao e toda a literatura do Delphi é organizada dessa forma.

Tres camadas em Delphi? Na verdade normalmente sao duas, interface com o usuario e banco, sendo que as regras ficam ou no botao ou no banco. Pelo menos foi o que eu sempre vi.

Na verdade quem direcionou o pessoal rumo a OO foi o Java e nao o Delphi, o que a Borland fez foi adaptar o pascal a OO pra abracar o paradigma que ja crescia, mas a popularizacao mesmo veio com o Java.

Nao consigo ver essa relacao, a TQuery e a TTable sao a representacao fiel da tabela do banco na memoria, o que vai completamente na direcao oposta da proposta do Hibernate.[/quote]

O O Pascal já existe ha muito tempo, antes da borland.
O código pascal é mais legível justamente porque a linguagem é bem mais regrada e tipada.

um laço em pascal é simples:

for i:=0 to x do

enquanto variantes do c++ precisam

for(int i=0;i<x;i++)

o quesito abaixo, te impede de declarar varáveis ao meio do código dificultando a compreensão

var x:Integer; begin end;

Nunca usei regras diretamente no botão, nem no banco. O delphi na época(E olha que tem tempo), sempre teve uma classe para exercer encapsulamento delas.

Sobre o :=, imagine comparar igualdade com ==, sendo que em pascal basta somente = (Mas é questão de gosto).

Eu imagino que a culpa de softwares mal feitos sejam dos programadores, e não de linguagens ou ferramentas de desenvolvimento.

É evidente que a culpa nao eh da linguagem, mas as empresas que dao suporte a linguagem nunca se preocuparam e dar alternativas aos desenvolvedores. Ou faz como eles querem ou sai fora.

Talvez voce nao tenha escrito regra no botao, mas tambem nao deve te-las escritos em objetos representando seu dominio, com suas responsabilidades bem definidas, com um mecanismo de persistencia transparente pra eles. Voce tinha que escrever e reescrever e alterar N classes cada vez que alterasse a regra e perder muito tempo escrevendo codigo repetitivo se quisesse de fato usar um modelo de dominio com Delphi.

Ou voce se adaptava a linguagem e fazia como a Borland queria que fosse feito.

[quote=YvGa]É evidente que a culpa nao eh da linguagem, mas as empresas que dao suporte a linguagem nunca se preocuparam e dar alternativas aos desenvolvedores. Ou faz como eles querem ou sai fora.

Talvez voce nao tenha escrito regra no botao, mas tambem nao deve te-las escritos em objetos representando seu dominio, com suas responsabilidades bem definidas, com um mecanismo de persistencia transparente pra eles. Voce tinha que escrever e reescrever e alterar N classes cada vez que alterasse a regra e perder muito tempo escrevendo codigo repetitivo se quisesse de fato usar um modelo de dominio com Delphi.

Ou voce se adaptava a linguagem e fazia como a Borland queria que fosse feito.[/quote]

Mas a culpa disso não é da linguagem O Pascal. Java sem hibernate cai nas mesmas questões citadas ae. Na época não existia hibernate nem castle. Se alguém abraçar a causa pode escrever um modelo de persistência para a vcl, e vai ser tão boa e produtiva quando hibernate.

Se você disser que os framework java são melhores que os do delphi eu concordo, mas em questões de linguagem, de jeito nenhum. Ainda hoje pascal é sinonimo de tecnologia no MIT.

Eu, hein… É cada uma que aparece… Se quiser ver o Delphi voando baixo, usando muita OO, aproveitamento de código entre outras coisas, dá um pulinho aqui na Santri.
É lógico que existem diferenças, como a questão da Interface que o próprio Chun citou em uns tópicos atrás, mas isso não impede de fazer uma coisa bem feita e com produtividade.
Sempre que vejo um programador Java ou C# detonar o Delphi, com meia dúzia de perguntas percebo logo que o cara não saca muito da linguagem.
A gente tem que botar na cabeça que somos programadores, e não programadores Delphi ou programadores Java.

Inté.

[quote=marciosantri]Eu, hein… É cada uma que aparece… Se quiser ver o Delphi voando baixo, usando muita OO, aproveitamento de código entre outras coisas, dá um pulinho aqui na Santri.
É lógico que existem diferenças, como a questão da Interface que o próprio Chun citou em uns tópicos atrás, mas isso não impede de fazer uma coisa bem feita e com produtividade.
Sempre que vejo um programador Java ou C# detonar o Delphi, com meia dúzia de perguntas percebo logo que o cara não saca muito da linguagem.
A gente tem que botar na cabeça que somos programadores, e não programadores Delphi ou programadores Java.

Inté.[/quote]

Nao estou dizendo que nao eh possivel, estou dizendo que as empresas por tras do Delphi nunca facilitaram isso.

Julio, ja houve tentativas de se fazer um framework de persistencia em Delphi, TODAS elas abandonadas, inclusive a da propria Borland com o Bold que nao deu em nada. Eu mesmo fiz uma no padrao Active Record, usando, evidentemente o TQuery e TClientDataSet, mas tudo fica mais ou menos.

[quote=YvGa][quote=marciosantri]Eu, hein… É cada uma que aparece… Se quiser ver o Delphi voando baixo, usando muita OO, aproveitamento de código entre outras coisas, dá um pulinho aqui na Santri.
É lógico que existem diferenças, como a questão da Interface que o próprio Chun citou em uns tópicos atrás, mas isso não impede de fazer uma coisa bem feita e com produtividade.
Sempre que vejo um programador Java ou C# detonar o Delphi, com meia dúzia de perguntas percebo logo que o cara não saca muito da linguagem.
A gente tem que botar na cabeça que somos programadores, e não programadores Delphi ou programadores Java.

Inté.[/quote]

Nao estou dizendo que nao eh possivel, estou dizendo que as empresas por tras do Delphi nunca facilitaram isso.

Julio, ja houve tentativas de se fazer um framework de persistencia em Delphi, TODAS elas abandonadas, inclusive a da propria Borland com o Bold que nao deu em nada. Eu mesmo fiz uma no padrao Active Record, usando, evidentemente o TQuery e TClientDataSet, mas tudo fica mais ou menos.[/quote]

Abandonadas pela borland sim, assim como o delphi mesmo. Não deram em nada por problemas de má adiministração, e acabaram também perdendo um grande engenheiro que foi para a microsoft.

O lazarus é hoje melhor que o delphi foi, além de possuir um compilador fiel ao object pascal e com suporte a instruções mmx. Com certeza um projeto opensource de persistência daria muito certo.

Errado, se você olhasse os tópicos de Delphi no seu auge, veria que a maioria já desenvolvia em três camadas em Delphi, seja com COM, Corba, Socket ou SOAP. Ele consegue trabalhar de forma transparente da tecnologia.

Não, o Java já pegou um público com conceitos intermediários.

[quote=YvGa]
Nao consigo ver essa relacao, a TQuery e a TTable sao a representacao fiel da tabela do banco na memoria, o que vai completamente na direcao oposta da proposta do Hibernate.[/quote]
Não, não são. Se você olhar a declaração de um TQuery ou TClientDataSet vai ver que nada mais é que uma classe com os atributos e que as operações que você trabalha nelas são armazenadas no banco de dados. Inclusive você pode ter um campo que seja um outro TDataSet, assim como o Hibernate faz com as chaves estrangeiras.
A diferença é que as operações do banco no Java geralmente utilizamos outra classe pra fazer isso, como as DAO, enquanto no Delphi é a própria classe que representa a tabela que faz a operação direta. A não ser que você use Bold ou BDP, que implementam o padrão DAO.

[quote=juliocbq]
Abandonadas pela borland sim, assim como o delphi mesmo. Não deram em nada por problemas de má adiministração, e acabaram também perdendo um grande engenheiro que foi para a microsoft.

O lazarus é hoje melhor que o delphi foi, além de possuir um compilador fiel ao object pascal e com suporte a instruções mmx. Com certeza um projeto opensource de persistência daria muito certo.[/quote]

Essa história de jogar o mérito no Anders é meio lenda. Borland e MS sempre teve técnico saindo de uma empresa e trabalhando em outra. Aliás, entre a maioria das empresas de tecnologia. O cara não era nem o engenheiro principal do Delphi, era um dos bons, mas não era o único.

Sou mais a má administração e os problemas financeiros típicos de uma empresa pequena e instável.
Faz muito tempo que mexi com o Lazarus (acho que a versão era 0.9.26), e ele era próximo ao Delphi 3, gerava código muito grande, não tinha um debug decente e ninguém conseguia programar 3 camadas com ele direito.

Já vi coisas incríveis sendo feitas em Delphi e, sabem de uma coisa? Pode-se dizer que Delphi possui um único problema, que já não existe mais: a Borland.

[quote=marcosalex][quote=juliocbq]
Abandonadas pela borland sim, assim como o delphi mesmo. Não deram em nada por problemas de má adiministração, e acabaram também perdendo um grande engenheiro que foi para a microsoft.

O lazarus é hoje melhor que o delphi foi, além de possuir um compilador fiel ao object pascal e com suporte a instruções mmx. Com certeza um projeto opensource de persistência daria muito certo.[/quote]

Essa história de jogar o mérito no Anders é meio lenda. Borland e MS sempre teve técnico saindo de uma empresa e trabalhando em outra. Aliás, entre a maioria das empresas de tecnologia. O cara não era nem o engenheiro principal do Delphi, era um dos bons, mas não era o único.

Sou mais a má administração e os problemas financeiros típicos de uma empresa pequena e instável.
Faz muito tempo que mexi com o Lazarus (acho que a versão era 0.9.26), e ele era próximo ao Delphi 3, gerava código muito grande, não tinha um debug decente e ninguém conseguia programar 3 camadas com ele direito. [/quote]

Não acho. O anders quem criou a linguagem delphi, que é uma adaptação do opascal, e consequentemente criou o c# para a ms, com cahe de $1000000. Quando ele saiu para a ms, a borland quebrou em menos de 6 meses.

Sobre o lazarus, o freepascal é muito superior ao delphi, e o código só é grande se você não estripar as informações de depuração do código, que com ela dá uns 12 megas. Sobre o debugger, eu concordo com você, o do delphi era melhor, mas lazarus tem atualizações diárias.

A lcl também é bem melhor que a vcl, além de ser totalmente compatível e multiplataforma.

Uma empresa não quebra em 6 meses por causa de um funcionário. Ele pode ter ajudado, mas a situação da empresa era endêmica. O JBuilder vendia mais que o Delphi nos Estados Unidos, mas ele também decaiu junto por uma série de motivos que nós sabemos (e não tinha nada a ver com o Anders).

Não acho o Lazarus superior ao Delphi, uma vez que a lcl não tem nem 20% das funções da VCL, embora tenha algumas coisas legais. Mas é questão de opinião.

[quote=marcosalex][quote=juliocbq]

Não acho. O anders quem criou a linguagem delphi, que é uma adaptação do opascal, e consequentemente criou o c# para a ms, com cahe de $1000000. Quando ele saiu para a ms, a borland quebrou em menos de 6 meses.

Sobre o lazarus, o freepascal é muito superior ao delphi, e o código só é grande se você não estripar as informações de depuração do código, que com ela dá uns 12 megas. Sobre o debugger, eu concordo com você, o do delphi era melhor, mas lazarus tem atualizações diárias.

A lcl também é bem melhor que a vcl, além de ser totalmente compatível e multiplataforma.
[/quote]

Uma empresa não quebra em 6 meses por causa de um funcionário. Ele pode ter ajudado, mas a situação da empresa era endêmica. O JBuilder vendia mais que o Delphi nos Estados Unidos, mas ele também decaiu junto por uma série de motivos que nós sabemos (e não tinha nada a ver com o Anders).

Não acho o Lazarus superior ao Delphi, uma vez que a lcl não tem nem 20% das funções da VCL, embora tenha algumas coisas legais. Mas é questão de opinião.[/quote]

Eu levo em conta a lcl ser multiplataforma. Ela pode não ter a quantidade de componentes, mas eles fazem o que propõem. Além do free pascal compilar para micros arm. Existe uma versão do lazarus que usa o framework qt. Da ultima vez que usei não estava estável, e preferi ficar com o padrão.

[quote=marcosalex]Errado, se você olhasse os tópicos de Delphi no seu auge, veria que a maioria já desenvolvia em três camadas em Delphi, seja com COM, Corba, Socket ou SOAP. Ele consegue trabalhar de forma transparente da tecnologia.
[/quote]
Sim, a toda a vcl é, de modo geral, bem escrita, com otimos niveis de abstracao. Mas a Borland nunca se preocupou em incentivar isso aos usuarios, como fez a Sun em seus tutoriais.

Se pegou nao foi por heranca do Delphi, cite algo na literatura sobre Delphi que indicasse que o publico ja tinha esses conceitos. Nao ha nada, mesmo entre os mais famosos autores, os topicos sobre OO nao passam de algumas paginas. De resto é só estudo da vcl.

[quote=marcosalex]
Não, não são. Se você olhar a declaração de um TQuery ou TClientDataSet vai ver que nada mais é que uma classe com os atributos e que as operações que você trabalha nelas são armazenadas no banco de dados. Inclusive você pode ter um campo que seja um outro TDataSet, assim como o Hibernate faz com as chaves estrangeiras.
A diferença é que as operações do banco no Java geralmente utilizamos outra classe pra fazer isso, como as DAO, enquanto no Delphi é a própria classe que representa a tabela que faz a operação direta. A não ser que você use Bold ou BDP, que implementam o padrão DAO.[/quote]
Existem inumeras diferencas na implementacao, mas a principal diferenca é conceitual. O Hibernate, assim como qualquer framework ORM veio pra resolver o velho problema do impedance mismatch, coisa que os componentes TDataSet, nem chegavam perto de resolver. Sempre foi extremamente trabalhoso tornar a persistencia transparente em Delphi.

Provavelmente sim, o maior problema do Delphi sempre foi a Borland, mas eu confesso que nao sinto a menor falta dele. Com C# eu tenho tudo que tinha em Delphi, com uma linguagem (na minha opiniao) mais agradavel e com bom suporte a desenvolvimento de um modelo de dominio rico.