Antes uma pequena apresentação/explicação/talvez reclamação:
Quando entrei em programação, foi graças ao incentivo de um vendedor.
Ele empolgou a diretoria da empresa aonde eu trabalhava, e disse que eu poderia fazer o sistema completo.
Com o incentivo dele, pude partir pra isso.
Aqui no fórum, tem usuário que responde mensagens até indicando alguma biblioteca gráfica e nem sequer usa Harbour.
Alguns nem sequer programam, apenas são chefes e outros é que fazem o serviço de programação.
Pode ser um incentivo, uma empolgação, mas pode desviar pra alguma coisa não muito boa.
Não existe biblioteca gráfica mágica.
Ambiente gráfico é diferente de ambiente texto.
Não é coisa simples testar bibliotecas gráficas.
Começa em que, dependendo da bilbioteca gráfica, é um pé no saco até pra chegar a uma versão funcionando.
Depois, cada usuário segue uma biblioteca gráfica diferente, então pode ter que se virar sozinho.
E dependendo do defeito que encontrar... vai ter que conviver com ele, ou começar tudo de novo com outra biblioteca.
Então vamos lá....
Vivi de programação Clipper desde 1986, até talvez ano 2011.
A partir daÃ, só Harbour.
No ano passado, peguei um sistema em Clipper Summer pra mexer:
Minha máquina é 64 bits há mais de um ano, então a primeira coisa foi fazer compilar com Harbour.
O Harbour funciona, é só usar. Depois que está rodando em Harbour, tem recursos à vontade pra brincar.
Pra quem está começando... o melhor é o Harbour 3.2
Porque? porque está mais compatÃvel com Clipper do que o Harbour 3.0, terá menos trabalho pra ajustar.
BCC, MSVC, qual compilador?
Ué... baixa a harbour nightly, que está pronta, já vém com mingw, e vá em frente.
Falaram que com bcc é mais rápida... com msvc é mais moderna... e a�
Ué... quer apostar corrida, quer fazer desfile de moda, ou quer fazer funcionar?
Faz funcionar na padrão, depois... pode quebrar a cabeça à vontade pra testar variações.
--- Neste ponto usava MSVC, depois por problemas com a GTWVG voltei pra mingw, e atualmente MSVC de novo, só porque fui compilar no cliente, e no cliente a compilação com mingw ficou lenta - normalmente não compilo no cliente. Entenda-se COMPILAÇÃO. O EXE final vai ser rápido em qualquer das linguagens.
oficial ou vszakats?
Mesma coisa. Quer fazer funcionar no Harbour, ou quer ficar testando versões do Harbour?
Baixa a que está pronta, e faz funcionar, depois... pode quebrar a cabeça à vontade pra testar variações.
Tá começando e quer começar direito, com a melhor versão?
Se tá começando, nem vai ver diferença.
E se está começando, quer perder semanas testando qual é a melhor, ou quer já ver resultado.
Baixe a que está pronta, e se preocupe em ajustar alguma incompabilidade.
Depois disso... pode quebrar a cabeça à vontade pra testar variações.
E biblioteca gráfica?
AÃ complicou de vez. Se estiver com pressa como eu estava... piorou
Cheguei a programar em Visual Basic 6, e acessar simultâneo os DBFs.
Tem cliente que reclama de não ter visual gráfico, e quando tem, reclama de não ter os recursos que o modo texto tem.
Com isso, minha versão em VB6 incompleta mas totalmente funcional foi abandonada.
Então... não tenha pressa também, pode ter muita coisa pra mexer antes de mexer no visual.
Ao invés de perder tempo com bilbiotecas gráficas, perdi meu tempo remodelando os fontes.
Introduzi classes pra facilitar programação.
Nesse meio tempo, acrescentei coisas simples da GTWVG que deram um visual aceitável.
Relatórios em PDF... já usava em Clipper, com rotinas em Clipper... no Harbour acabei indo pra Harupdf e pude melhorar o visual ainda mais.
Então os finalmentes:
Tá trabalhando com Clipper?
Instale Harbour na máquina. Trabalhe com seus fontes em Clipper, e de vez em quando teste compilar seus fontes com Harbour.
Vai trabalhando com Clipper, testando os mesmos fontes no Harbour, e vai ajustando.
O fonte pode funcionar nos dois, então use essa facilidade pra ir ajustando os fontes, sem precisar criar versão de teste.
Quando menos esperar, vai estar pronto pra rodar em Harbour.
Aqui os clientes vão gostar do ganho de velocidade, e não vai precisar se preocupar com máquinas 64 bits.
Pode dar preferência pra usar a "tolerância zero" na compilação, usando -w3 -es2, isso vai ser bom pro futuro, e pode fazer isso mesmo compilando com Clipper.
E depois?
Tem tela e relatório. De qualquer jeito vai ter que mexer em relatórios, então comece por eles.
Pode passar os relatórios pra PDF, e ter visuais melhores.
Os clientes falam que não precisam, mas basta verem recursos que vão querer mais, ainda mais que as impressoras Laser estão assumindo o mercado pra nota fiscal eletrônica e afins. A impressora Laser custa muito menos que uma matricial, então não dá pra fugir delas.
Aqui os clientes vão gostar do visual novo em papel, e também na tela ao abrir PDFs, e em alguns casos da economia em compra de equipamento novo.
E durante/depois?
Tem fonte que é uma droga, é melhor reescrever do que aproveitar.
Então, aproveite pra dar uma geral. Vai poder testar recursos novos, como classes, pra facilitar.
Também vai poder testar recursos gráficos.
Recomendação de biblioteca gráfica?
Nenhuma. Se começar por ela pode desistir de tudo.
De repente, a GTWVG por poder mixar ambientes, e poder testar misturado ao que já tem.
Só voltando no "tolerância zero":
um exemplo de coisa errada que encontrei em fontes que mexo:
procedure main
x = ""
y = ""
Modulo()
? x
? y
return
FUNCTION Modulo()
x = arquivo->campo1
y = arquivo->campo2
return
No "tolerância zero", vai dar erro de variáveis nos dois módulos.
O importante não é declarar as variáveis, é tornar os módulos independentes.
Aà você tem um probleminha de variáveis no primeiro módulo, e outro no segundo módulo, que geram um problema maior por serem dependentes, e maior ainda se isso acontecer no sistema inteiro.
Vou fazer sem declarar variáveis, pra mostrar como poderia ser feito:
procedure main
x = ""
y := ""
Modulo( @x, @y )
? x
? y
RETURN
FUNCTION Modulo( a, b )
a := arquivo->campo1
b := arquivo->Campo2
RETURN NIL
Qual a diferença?
Cada módulo se tornou independente pra alteração.
Não importa nome de variável nos dois, pode escolher o nome que quiser.
Eles são dependentes para o resultado, mas não para os nomes de variáveis.
No primeiro exemplo, não pode mexer num módulo/função sem mexer na outro.
No segundo exemplo, pode mexer em qualquer um sem se importar com o outro.
Passa a ter probleminhas isolados pra resolver, e não um problemão igual teia de aranha, que mexe de um lado e bagunça o outro.
É isso que o "tolerância zero" significa, e é nisso que ele ajuda.
Dependendo do fonte, vai dar trabalho só de passar a compilar usando -w3 -es2.
Mas vale a pena... vai deixar de ter problemões pra resolver, e passar a ter apenas probleminhas isolados.
Quanto mais for usando, menos problemas vai ter.
Além disso, passa a ter checagem na própria compilação caso use nome de variável errado, ao invés do erro "variable does not exist" durante execução.
Pra aceitar no "tolerância zero", faltou declarar variáveis, que neste exemplo deixa até o fonte menor:
procedure main
LOCAL x,y
Modulo( @x, @y )
? x
? y
RETURN
FUNCTION Modulo( a, b )
a := arquivo->campo1
b := arquivo->Campo2
RETURN NIL
Resumindo:
Tem muita coisa que pode ser melhorada nos fontes.
Tem muito trabalho pra ser feito.
Se preocupe em melhorar os fontes, que vai estar pronto pra qualquer coisa, até mesmo se decidir mudar de linguagem de programação.
Qual Harbour usar? O problema não é qual, e sim quando... quanto antes melhor, pra não desperdiçar tempo.
Que ordem seguir em tudo isso? Comece a fazer, e vai encontrar a melhor ordem pra você/seus fontes, conforme o que for acontecendo.
Se os fontes estão bons, pode testar qualquer coisa a qualquer hora.
Vou tentar não revisar mais este texto, porque senão sempre tem coisa pra mexer....