Linguagem para desenvoler aplicativos Linux / Windows

Discussão sobre linux para plataformas Intel x86 ou x64 (PC)

Moderadores: 51, guest2003, Renie, gpenga

Linguagem para desenvoler aplicativos Linux / Windows

Mensagempor Rinaldo Camara » 14 Jun 2008 13:21

Galera, qual compilador vocês utilizam para desenvolver aplicativos para Linux (Ubuntu) e Windows.
Vou precisar utilizar API´s para a porta serial e USB.
O que vocês sugerem entre softwares comerciais e livres.
Rinaldo Camara
 
Mensagens: 2
Registrado em: 23 Nov 2006 11:24

Mensagempor xultz » 15 Jun 2008 14:20

O compilador, neste caso é o gcc.
Para aplicações de modo gráfico que sejam compiladas cross-plataform, uma boa sugestão é o WxWidget.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor Paulo » 16 Jun 2008 09:37

Uma boa linguagem para isso é Java, pois uma das principais vantagens dela é ser multiplataforma, ou seja, você desenvolve uma aplicação que irá rodar em qualquer SO, pois ela não depende diretamente do SO, devido a utilização de uma máquina virtual para cada SO.

Eu recomendo o Eclipse com IDE para desenvolvimento, mas existe outras, uma outra muito boa também é o NetBeans.


Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor Wagner de Queiroz » 16 Jun 2008 21:16

bom. Se voce é adepto do Delphi, voce pode usar o Lazarus.

O Lazarus é uma IDE para gerar aplicacoes graficas como o delphi. Na verdade o Lazarus é uma especie de Delphi.

Para usar a serial, use a biblioteca Synaser. Meu MSN esta a disposicao caso se interesse. A noite estou mais disponivel para responder.

Agora. Se sua Linguagem é C, nao tem como escapar do GCC.

Particularmente nao curto java pq ele é meio interpretadao e pode ser lento para algumas coisas. Mas é portavel.

No Lazarus vc precisa alterar alguma coisinha entre Windows e Linux, mais nomes de arquivos para abrir e tal.

Outra coisa quanto a Serial. Nao use API caso queira fazer algo multiplataforma. Pq a API do Windows é distinta do Linux e voce vai ter dor de cabeça com isso. Use o Synaser para acessar a serial. E para USB, o chip FTDI tem drivers e exemplos para Windows e Linux. E para completar, a mesma unit no windows como no linux deverá funcionar.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor Rinaldo Camara » 16 Jun 2008 21:59

Galera obrigado pelas dicas vou avaliar e posto os resultados.

Rinaldo
Rinaldo Camara
 
Mensagens: 2
Registrado em: 23 Nov 2006 11:24

Mensagempor joe-adb » 17 Jun 2008 14:31

Essa história do Java ser portável não é 100% confiável né?

Olha o exemplo da classe para serial do Java: http://www.captain.at/howto-java-serial ... m-rxtx.php

Preste atenção ao trecho do código:
// determine the name of the serial port on several operating systems
String osname = System.getProperty("os.name","").toLowerCase();
if ( osname.startsWith("windows") ) {
// windows
defaultPort = "COM1";
} else if (osname.startsWith("linux")) {
// linux
defaultPort = "/dev/ttyS0";
} else if ( osname.startsWith("mac") ) {
// mac
defaultPort = "????";
} else {
System.out.println("Sorry, your operating system is not supported");
return;
}


Mas realmente, em termos de portabilidade, Java é muito mais fácil que C++ ou C já que encapsula muita coisa no seu framework (embora você tenha que instalar a máquina Java nos seus sistemas é claro).

Uma outra boa pedida, que está bem na moda e é totalmente interpretada é o Python.
Dê uma olhada neste módulo livre pra serial para Python:
http://pyserial.sourceforge.net/

Há muito tempo atrás eu procurei algum framework ou biblioteca multiplataforma para manipular porta serial/USB/paralela no estilo das que existem pra criação de interfaces gráficas (WxWidgets, GTKmm, QT, Fox, FLTK) em C++ mas não achei nada.
Será que não existe mesmo? Seria muito útil.


Wagner, o Delphi ainda é suportado pela Borland? Eu pensei que tivesse sido descontinuado...
joe-adb
Bit
 
Mensagens: 48
Registrado em: 11 Out 2006 22:08

Mensagempor Paulo » 17 Jun 2008 15:42

joe-adb escreveu:Essa história do Java ser portável não é 100% confiável né?

Olha o exemplo da classe para serial do Java: http://www.captain.at/howto-java-serial ... m-rxtx.php

Preste atenção ao trecho do código:
// determine the name of the serial port on several operating systems
String osname = System.getProperty("os.name","").toLowerCase();
if ( osname.startsWith("windows") ) {
// windows
defaultPort = "COM1";
} else if (osname.startsWith("linux")) {
// linux
defaultPort = "/dev/ttyS0";
} else if ( osname.startsWith("mac") ) {
// mac
defaultPort = "????";
} else {
System.out.println("Sorry, your operating system is not supported");
return;
}


Mas realmente, em termos de portabilidade, Java é muito mais fácil que C++ ou C já que encapsula muita coisa no seu framework (embora você tenha que instalar a máquina Java nos seus sistemas é claro).

Uma outra boa pedida, que está bem na moda e é totalmente interpretada é o Python.
Dê uma olhada neste módulo livre pra serial para Python:
http://pyserial.sourceforge.net/

Há muito tempo atrás eu procurei algum framework ou biblioteca multiplataforma para manipular porta serial/USB/paralela no estilo das que existem pra criação de interfaces gráficas (WxWidgets, GTKmm, QT, Fox, FLTK) em C++ mas não achei nada.
Será que não existe mesmo? Seria muito útil.


Wagner, o Delphi ainda é suportado pela Borland? Eu pensei que tivesse sido descontinuado...


No acaso de acesso a alguns dispositivos de hardware como a serial, você tem que ajustar de acordo com o SO, pq essa parte acaba sendo muito dependente do SO.

Com relação ao Java ser interpretado e devido a isso a execução do aplicativo ser mais lenta é um pouco relativo, pq quem trabalha com Java a mais tempo, sabe que isso vem melhorando e muito com o passar dos tempos, até porque o desempenho dos micros vem aumentando cada vez mais, em algumas situações chega a ser imperceptível essa diferença.
Eu diria que a transição para Java se assemelha a transição de Assembly para C, no início o código em C ficava muito maior, consumindo mais memória do micro, diminuindo o desempenho, mas hoje os compiladores evoluíram muito e um código feito em C, não deixa a desejar na maioria dos casos e por outro lado vem a vantagem da portabilidade fazendo o código em C, a vantagem da facilidade de manutenção, etc...
Essas opções dependem muito da aplicação e variam de caso para caso.


Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor chipselect » 17 Jun 2008 20:28

joe

No caso do código que vc citou, simplesmente o programador deixou os nomes lógicos das portas "hardcoded" no fonte, o que não é aconselhado como boa prática de programação... o mais correto é construir uma rotina que pega a lista de portas seriais e assim não tem problema de ser "/dev/tty0" ou "COM1"... o java (usando o rxtx) pode pegar isso em runtime.

A API que faz acesso às portas seriais no java também não é portável, não é problema do java em si. No caso do seu exemplo é utilizado o RXTX, poderia ser a API antiga que tinha da própria Sun (a CommApi que não é mais suportada em win pela Sun), mas mesmo assim você precisa ter os arquivos de apoio corretos (os .so ou .dll, dependendo do sistema operacional).

O código em java que faz uso dessa API, excetuando talvez a inicialização da própria API, é exatamente o mesmo para todos os SOs atualmente suportados, logo, na parte do Java em si, é portável... mas o resultado final fica meio dependente do sistema operacional hospedeiro pois o RXTX utiliza JNI para acessar a serial, já que a JVM não fornece suporte para tal fim.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor Wagner de Queiroz » 18 Jun 2008 08:41

Bom pessoal, a briga é o seguinte.

Em resposta do delphi, a Divisao CodeGear que era da Borland foi vendida para a empresa Embarcadero. O DELPHI NÃO É PORTAVEL.

Existe uma versao chamada Kylix que era leeenta e nao vingou.

Serial é um problema sério mesmo entre os sistemas operacionais. EXCETO
para o Lazarus.

O Lazarus é um projeto de uma IDE criada pela turma do FreePascal. Eles nao tem nenhuma ligacao com a Borland. O Lazarus tem codigo fonte e pode ser modificado livremente. Entao duvido que vá desaparecer.

O lazarus nao tem componentes para a porta serial. Entretanto o pessoal da Ararat Software fez uma biblioteca para comunicacao serial chamada Synaser.

Esta biblioteca tem codigo fonte, nao é componente. Roda no Delphi e no Lazarus e É 100% Portavel para Windows e Linux.

O python parece ser tb uma opção interessante. entretanto desconheco a parte grafica dela. Particularmente nao gosto muito de linguagens interpretadas pq usei o BASIC desde 1989 até 1997 e sei como ele é lento. O Python parece ser mesmo uma opcao legal pq pode rodar dentro do apache, seria perfeito se ele fosse rodar tb no navegador sem plugins.
Mas ai é pretensao demais né.


Bom o Pascal é facil de aprender, quase todo mundo que faz exatas na faculdade teve um pouco de nocao de Pascal, O Portugol é parecido com o Pascal portanto é facil de aprender.

Só resta colher mais opiniões sobre o Lazarus ja que sou suspeito para defender.

O lazarus tem uma fraqueza legal no Windows pq gera executaveis muuito grandes. Mas fazer o que né. Nem tudo é perfeito.

Espero um dia o pessoal conseguir fazer um port do freepascal para microcontroladores.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor joao » 20 Ago 2008 11:18

Xultz,

Essa sua dica sobre usar o WxWidgets é muito boa!
Ainda mais que é em C/C++!!!
Eu estava brincando em fazer telas(forms) através do allegro, que é uma biblioteca multiplataforma, mas o grande problema é que ele não tem forms prontos, vc tem que criar td! desde criação até a validação de cada botão função.

Esse wxwidgets é uma mão na roda de quem quer portabilidade em C/C++. E ele me parece bem estável, já que existe desde 1992!

Valeu pela dica!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Jorge_Francisco » 20 Ago 2008 11:27

Esquece Pascal, isso é para aprendizado somente.

Use C/C++ ou Java, a diferença é que o primeiro terá que compilar no sistema em questão e o segundo é "portável". Na verdade chamar de portável algo como instalar uma VM de 6 MB é sacanagem neh. Ah, mas depois de instalado nunca mais irá precisar instalar de novo. OK, mas o correto então seria que todo sistema operacional viesse integrado com a VM e fosse atualizada com o tempo.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor msamsoniuk » 20 Ago 2008 13:21

compatibilidade jah existe: se vc desenvolve para windows eh soh rodar direto no linux com wine. se vc desenvolve com linux, eh soh rodar direto com o cygwin. nao precisa escolher toolkit compativel e tao pouco se preocupar muito com compatibilidade.

claro, alguem poderia argumentar sobre a questao dos nomes dos devices, como a serial, mas isso realmente nao eh levado em consideracao se vc pensar q cada unix coloca um nome diferente nas coisas e mesmo assim sao todos compativeis entre si. eh obvio que essas diferencas existem, mas sao compreendidas e compensadas transparentemente por usuarios e desenvolvedores muito mais gabaritados do que o encontrados no mundo windows. ok, eu exagerei: o nome da serial eh soh uma string idiota e vc pode criar um link simbolico para o nome que vc gosta de usar.

por outro lado, usuarios de linux parecem nao gostar muito de rodar aplicacoes mal feitas e instaveis criadas para windows. eh um resultado meio obvio neh, pq eu iria rodar um visual c++ grande e lerdo se eu posso chamar o make e gcc no prompt de comando com um esforco infinitamente menor ? e o legal eh que tem zilhoes de opcoes no prompt que fazem qq coisa que vc consegue imaginar! da mesma forma, o usuario tipico de windows nao fica nada a vontade abrindo um prompt de comando no cygwin e digitando make... pq catar milho para digitar 4 letras no prompt se ele pode fazer o mesmo muito mais agilmente com 200 clicks do mouse no windows ? pq se preocupar com estabilidade se seu mega PC com windows nem eh uma maquina multiusuaria ? rebootar a cada 10 minutos nao vai atrapalhar ninguem no windows, mas eh o apocalipse final quando ocorre em um servidor unix com zilhoes de pessoas logadas!

enfim, acho que cada usuario de cada plataforma tem seu metodo de trabalho e querer encontrar um meio termo entre os ambientes eh um tiro no peh! vc vai ter um produto dificil de usar para quem usa windows e um produto muito superficial para quem usa unix.

ah sim! e como hoje estou malvado, nao poderia deixar de comentar: programadores de verdade usam linguagem C! ;)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor chipselect » 20 Ago 2008 13:48

Marcelo, eu acho que vc deveria incluir java na sua frase, a não ser que orientação a objetos "de verdade" seja considerado "modismo".
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor Jorge_Francisco » 20 Ago 2008 13:58

chipselect escreveu:Marcelo, eu acho que vc deveria incluir java na sua frase, a não ser que orientação a objetos "de verdade" seja considerado "modismo".


Acho que programadores de verdade sabem fazer ALGORITMO de verdade, independente da linguagem.

Uma coisa eu concordo, se o programador sabe C++ e orientação a objetos, sabe programar em qualquer linguagem, incluindo JAVA.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor msamsoniuk » 20 Ago 2008 18:09

java nao eh modismo, eh falta de vergonha na cara mesmo! eh praticamente coisa de emo, de desenvolvedor chorao que tem medinhos de botar a mao em codigo C pq doi!

existe uma distancia intransponivel entre essa falta de vergonha na cara chamada programacao orientada a objetos e o mundo real. como sempre, o objetivo dos desenvolvedores eh tomar atalhos para trabalhar menos, mas o resultado disso sao softwares mal feitos que requerem cada vez mais recursos, possuem cada vez mais bugs, custam cada vez mais caros e fazem cada vez menos!

as pessoas deviam parar de perder tempo tentando achar atalhos para cortar tempo de desenvolvimento e simplesmente arregacar as mangas e ir trabalhar.

ou, se querem insistir com o desenvolvimeto de tecnologias inuteis que nao agregam performance e qualidade, podiam ao menos parar de fazer os outros perderem tempo.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Próximo

Voltar para Linux ( x86 ou x64 )

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x