A linguagem de alto nível mais multiplataforma até agora[FECHADO]

Atualmente, a linguagem C/C++ roda em quase qualquer tipo de computador: desde PCs a servidores (Windows/Linux/Mac/ect…); sem falar de dispositivos móveis (Android OS, Symbian OS).
Pelo que vejo, por incrível que parece, acho que chega a superar o próprio Java, cujo proposito de criação era justamente esse. :lol: :lol: :lol: :lol:
Posso estar enganado mas alguém conhece uma linguagem de alto nível mais multiplataforma que o C/C++?

interessante saber isso, no caso o que varia é o compilador certo? com isso voce não precisaria de VM.

Claro, todos os OS para desktop e dispositivos móveis, pelo que sei, tem um compilador para o C/C++, já um interpretador VM, isso infelizmente não é verdadeiro :frowning: :frowning: :frowning:
Em resumo compiladores C/C++ wins :lol: :lol: :lol:

acho que vocês dois precisam rever o que vocês entendem por “multiplataforma”… a ideia do java ser considerado como “multiplataforma”, é rpo que você nem precisa recompilar seu software, pode usar este mesmo executavel em um so windows ou linux por exemplo… essa que é a grande vantagem de usar uma VM (claro que ainda temos outras como o garbage collector por exemplo, mas a ideia por tras de se usar uma vm é justamente a portabilidade).

Você até pode recompilar seu código C em linux por exemplo, mas isso vai depender muito do seu código, várias coisas como a api de threads por exemplo você tem uma para linux e outra para windows, dependendo do que vocÊ tiver não terá só que recompilar, mas também alterar seu código fonte… partindo desse ponto de vista linguagens interpretadas como o php por exemplo são mais “portaveis” que o c por exemplo por que não precisam compilar…

resumindo, eu ao menos entendo portabilidade como o fato de você poder executar um software em várias plataformas com a menor quantidade de alterações ou ações para poder executa-la, compila-la está incluido nisso…

[quote=maior_abandonado]acho que vocês dois precisam rever o que vocês entendem por “multiplataforma”… a ideia do java ser considerado como “multiplataforma”, é rpo que você nem precisa recompilar seu software, pode usar este mesmo executavel em um so windows ou linux por exemplo… essa que é a grande vantagem de usar uma VM (claro que ainda temos outras como o garbage collector por exemplo, mas a ideia por tras de se usar uma vm é justamente a portabilidade).
Você até pode recompilar seu código C em linux por exemplo, mas isso vai depender muito do seu código, várias coisas como a api de threads por exemplo você tem uma para linux e outra para windows, dependendo do que vocÊ tiver não terá só que recompilar, mas também alterar seu código fonte…
[/quote]
Assim como, devem serem feitas alterações em códigos gerados por C/C++, a VM para dispositivos móveis costuma variar também. Lembro que uma vez precisei fazer um código para Palm OS e penei para encontrar a VM especifica para ele. Sem falar na questão do Android.
Então no 1 caso para respeitar a portabilidade de código estamos mais amarrados ao código.
Já com o Java dependemos de seu interpretador (VM), que pode mudar para os diferentes SOs.
PS: Como nunca desenvolvi código C/C++ para Linux não sabia essa diferença no que refere a Threads com o Windows.

[quote=maior_abandonado]acho que vocês dois precisam rever o que vocês entendem por “multiplataforma”… a ideia do java ser considerado como “multiplataforma”, é rpo que você nem precisa recompilar seu software, pode usar este mesmo executavel em um so windows ou linux por exemplo… essa que é a grande vantagem de usar uma VM (claro que ainda temos outras como o garbage collector por exemplo, mas a ideia por tras de se usar uma vm é justamente a portabilidade).

Você até pode recompilar seu código C em linux por exemplo, mas isso vai depender muito do seu código, várias coisas como a api de threads por exemplo você tem uma para linux e outra para windows, dependendo do que vocÊ tiver não terá só que recompilar, mas também alterar seu código fonte… partindo desse ponto de vista linguagens interpretadas como o php por exemplo são mais “portaveis” que o c por exemplo por que não precisam compilar…

resumindo, eu ao menos entendo portabilidade como o fato de você poder executar um software em várias plataformas com a menor quantidade de alterações ou ações para poder executa-la, compila-la está incluido nisso…[/quote]

Tudo tudo tem um “depende” nessa história, e até mesmo para o java.
Se você escrever usando iso c++ ou ansi c é certeza que não precisará alterar uma linha de código para que ele seja multiplataforma. Precisa recompilar, é verdade mas não terá dependências de runtime. Se usar um framework robusto como qt vai, vai possuir recursos totalmente orientados a objeto e mvc. Também vai rodar nas mais diversas plataformas. Com certeza bem maior que o alcance do java, mas é porque a linguagem c foi desenhada para programar e desenvolver hardware.

Outra coisa sobre o java é, por exemplo escrever um software para desktop jse e tentar rodá-lo sem alterar seu código em uma jme vm. Não funciona. Em c um programa desktop é semelhante(realmente igual) a um programa para microcontrolador de 1kb de memória.

Em contrapartida java possui uma linguagem moderna, ferramentas de alta qualidade e é suportada por muitas plataformas também. Tudo tem um “depende” na questão.

Outra coisa, a linguagem que alveja o maior número de plataformas é a linguagem c, e não c++. Não existem muitos compiladores de c++ para a maioria das arquiteturas de microcontroladores.

[quote=fabioEM][quote=maior_abandonado]acho que vocês dois precisam rever o que vocês entendem por “multiplataforma”… a ideia do java ser considerado como “multiplataforma”, é rpo que você nem precisa recompilar seu software, pode usar este mesmo executavel em um so windows ou linux por exemplo… essa que é a grande vantagem de usar uma VM (claro que ainda temos outras como o garbage collector por exemplo, mas a ideia por tras de se usar uma vm é justamente a portabilidade).
Você até pode recompilar seu código C em linux por exemplo, mas isso vai depender muito do seu código, várias coisas como a api de threads por exemplo você tem uma para linux e outra para windows, dependendo do que vocÊ tiver não terá só que recompilar, mas também alterar seu código fonte…
[/quote]
Assim como, devem serem feitas alterações em códigos gerados por C/C++, a VM para dispositivos móveis costuma variar também. Lembro que uma vez precisei fazer um código para Palm OS e penei para encontrar a VM especifica para ele. Sem falar na questão do Android.
Então no 1 caso para respeitar a portabilidade de código estamos mais amarrados ao código.
Já com o Java dependemos de seu interpretador (VM), que pode mudar para os diferentes SOs.
PS: Como nunca desenvolvi código C/C++ para Linux não sabia essa diferença no que refere a Threads com o Windows.

[/quote]

A questão das threads está ligada ao framework utilizado. Se usar iso é a mesma coisa tanto para posix threads como para win threads.

Essa implementação aqui é multiplataforma:

[code] class MyThread : public QThread
{
public:
void run();
};

void MyThread::run()
{
QTcpSocket socket;
// connect QTcpSocket’s signals somewhere meaningful

socket.connectToHost(hostName, portNumber);
exec();
}
[/code]
http://doc.qt.nokia.com/latest/qthread.html

[quote=juliocbq][quote=fabioEM][quote=maior_abandonado]acho que vocês dois precisam rever o que vocês entendem por “multiplataforma”… a ideia do java ser considerado como “multiplataforma”, é rpo que você nem precisa recompilar seu software, pode usar este mesmo executavel em um so windows ou linux por exemplo… essa que é a grande vantagem de usar uma VM (claro que ainda temos outras como o garbage collector por exemplo, mas a ideia por tras de se usar uma vm é justamente a portabilidade).
Você até pode recompilar seu código C em linux por exemplo, mas isso vai depender muito do seu código, várias coisas como a api de threads por exemplo você tem uma para linux e outra para windows, dependendo do que vocÊ tiver não terá só que recompilar, mas também alterar seu código fonte…
[/quote]
Assim como, devem serem feitas alterações em códigos gerados por C/C++, a VM para dispositivos móveis costuma variar também. Lembro que uma vez precisei fazer um código para Palm OS e penei para encontrar a VM especifica para ele. Sem falar na questão do Android.
Então no 1 caso para respeitar a portabilidade de código estamos mais amarrados ao código.
Já com o Java dependemos de seu interpretador (VM), que pode mudar para os diferentes SOs.
PS: Como nunca desenvolvi código C/C++ para Linux não sabia essa diferença no que refere a Threads com o Windows.

[/quote]

A questão das threads está ligada ao framework utilizado. Se usar iso é a mesma coisa tanto para posix threads como para win threads.

Essa implementação aqui é multiplataforma:

[code] class MyThread : public QThread
{
public:
void run();
};

void MyThread::run()
{
QTcpSocket socket;
// connect QTcpSocket’s signals somewhere meaningful

socket.connectToHost(hostName, portNumber);
exec();
}
[/code]
http://doc.qt.nokia.com/latest/qthread.html

[/quote]
uhmm… então se consigo fazer isso com C/C++ concorda comigo que o C/C++ é mais portável que o Java. Afinal, esse código aí que você postou poderá rodar no Linux e no Windows sem alterações. Já um sistema em Java obriga o cliente a terá uma JVM e enquanto ela for free.
Parabéns pelas suas colocações, foram bem pertinentes e interessantes :lol:

[quote=fabioEM][quote=juliocbq]

A questão das threads está ligada ao framework utilizado. Se usar iso é a mesma coisa tanto para posix threads como para win threads.

Essa implementação aqui é multiplataforma:

http://doc.qt.nokia.com/latest/qthread.html

[/quote]
uhmm… então se consigo fazer isso com C/C++ concorda comigo que o C/C++ é mais portável que o Java. Afinal, esse código aí que você postou poderá rodar no Linux e no Windows sem alterações. Já um sistema em Java obriga o cliente a terá uma JVM e enquanto ela for free.
Parabéns pelas suas colocações, foram bem pertinentes e interessantes :lol:

[/quote]
Não, você também terá um código em Java que funcione igual. E é o que te explicaram, depende se você considera a necessidade de recompilar o software interfere na portabilidade. Por isso que todos enfatizaram o ‘depende’. Não tem como uma linguagem ser boa pra tudo porque as necessidades de um podem ser o oposto das necessidades de outro. E por isso existem tantas linguagens.

[quote=marcosalex][quote=fabioEM][quote=juliocbq]

A questão das threads está ligada ao framework utilizado. Se usar iso é a mesma coisa tanto para posix threads como para win threads.

Essa implementação aqui é multiplataforma:

http://doc.qt.nokia.com/latest/qthread.html

[/quote]
uhmm… então se consigo fazer isso com C/C++ concorda comigo que o C/C++ é mais portável que o Java. Afinal, esse código aí que você postou poderá rodar no Linux e no Windows sem alterações. Já um sistema em Java obriga o cliente a terá uma JVM e enquanto ela for free.
Parabéns pelas suas colocações, foram bem pertinentes e interessantes :lol:

[/quote]
Não, você também terá um código em Java que funcione igual. E é o que te explicaram, depende se você considera a necessidade de recompilar o software interfere na portabilidade. Por isso que todos enfatizaram o ‘depende’. Não tem como uma linguagem ser boa pra tudo porque as necessidades de um podem ser o oposto das necessidades de outro. E por isso existem tantas linguagens.

[/quote]
Cara,
O tópico não era para definir qual é a linguagem melhor, mas a mais qual linguagem que é mais multiplataforma, entenda, são coisas bem diferentes :wink: :wink: :wink: :wink:

[quote=fabioEM][quote=marcosalex]
Não, você também terá um código em Java que funcione igual. E é o que te explicaram, depende se você considera a necessidade de recompilar o software interfere na portabilidade. Por isso que todos enfatizaram o ‘depende’. Não tem como uma linguagem ser boa pra tudo porque as necessidades de um podem ser o oposto das necessidades de outro. E por isso existem tantas linguagens.

[/quote]
Cara,
O tópico não era para definir qual é a linguagem melhor, mas a mais qual linguagem que é mais multiplataforma, entenda, são coisas bem diferentes :wink: :wink: :wink: :wink: [/quote]

É o que estou falando: se você considerar a necessidade de recompilar o programa, vai ter uma conclusão, se achar que ter de recompilar não influencia na multiplataforma, vai ter outra conclusão. É possível fazer sistemas tanto C quando Java rodando em várias plataformas, mas quanto mais plataformas, mais limitado você fica.

Realmente abrangência do C/C++ é totalmente superior que o java! Um bom exemplo disso é a abrandecia da plataforma QT.
Entretanto, vale lembrar que a plataforma Java é para aplicações corporativas !! Ou seja, não existe “aplicação-corporativa” em mini processadores aonde o C chega.

[quote=FernandoFranzini]Realmente abrangência do C/C++ é totalmente superior que o java! Um bom exemplo disso é a abrandecia da plataforma QT.
Entretanto, vale lembrar que a plataforma Java é para aplicações corporativas !! Ou seja, não existe “aplicação-corporativa” em mini processadores aonde o C chega.[/quote]
Isso que imaginei, essa questão me parece inegável. Agora, não entendo o porquê do fato da compilação ser necessariamente uma desvantagem no que refere uma linguagem ser multiplataforma. Até porque o Java usa ambas as técnicas, interpreta e compila e além do mais as VM são diferentes para muitos SO. Quando entrei na faculdade só se falava do Java e de sua impressionante portabilidade. Porém quando caí de paraquedas no mercado de trabalho, percebi que não era bem assim. E, que na verdade C/C++ ,apesar de serem mais antigas, continuam bem de pé. :lol: Um profissional inclusive que conheça bem a fundo C/C++ ganha bem mais que um profissional que manja bem uma linguagem de alto nível como o Java. Isso todo mundo sabe, pois são poucos esses profissionais. Um profissional que desenvolva C/C++ deverá estar trabalhando para SO, miniprocessadores ou Jogos,ou seja, tudo que rende bem mais dinheiro que aplicações coorporativas. Na verdade, um desenvolvedor de SO além de ser bom em lógica deve ser ainda melhor em matemática, coisa que poucos e eu tó dentro somos :wink: :wink:

[quote=fabioEM]
Isso que imaginei, essa questão me parece inegável. Agora, não entendo o porquê do fato da compilação ser necessariamente uma desvantagem no que refere uma linguagem ser multiplataforma. [/quote]
Mas exatamente isso é que é o ‘depende’. Pra muitas empresas pode não ser, pra outras pode fazer toda a diferença. Se a mesma regra valesse pra todos, não existiriam tantas linguagens.

[quote=fabioEM][quote=FernandoFranzini]Realmente abrangência do C/C++ é totalmente superior que o java! Um bom exemplo disso é a abrandecia da plataforma QT.
Entretanto, vale lembrar que a plataforma Java é para aplicações corporativas !! Ou seja, não existe “aplicação-corporativa” em mini processadores aonde o C chega.[/quote]
Isso que imaginei, essa questão me parece inegável. Agora, não entendo o porquê do fato da compilação ser necessariamente uma desvantagem no que refere uma linguagem ser multiplataforma. Até porque o Java usa ambas as técnicas, interpreta e compila e além do mais as VM são diferentes para muitos SO. Quando entrei na faculdade só se falava do Java e de sua impressionante portabilidade. Porém quando caí de paraquedas no mercado de trabalho, percebi que não era bem assim. E, que na verdade C/C++ ,apesar de serem mais antigas, continuam bem de pé. :lol: Um profissional inclusive que conheça bem a fundo C/C++ ganha bem mais que um profissional que manja bem uma linguagem de alto nível como o Java. Isso todo mundo sabe, pois são poucos esses profissionais. Um profissional que desenvolva C/C++ deverá estar trabalhando para SO, miniprocessadores ou Jogos,ou seja, tudo que rende bem mais dinheiro que aplicações coorporativas. Na verdade, um desenvolvedor de SO além de ser bom em lógica deve ser ainda melhor em matemática, coisa que poucos e eu tó dentro somos :wink: :wink: [/quote]

Isso já não procede. Pode ser uma falsa ilusão pelo seguinte:

Sobre a compilação é uma extrema vantagem não ter que fazê-lo, já é trabalho a menos. Java é praticamente imbatível nas plataformas que funciona e se aplicado para as soluções corretas.
Por exemplo, eu não faria um sistema de web services com c++, apesar de poder. C++ não é para isso, além de existirem centenas de frameworks para java com qualidade muito superior aos que existem para c++(que normalmente boa parte da funcionalidade precisa ser implementada no braço se você quer boa qualidade de software).

Como a maioria(90%) dos empregos para programadores de linguagem c é focada no desenvolvimento de hardware, grande parte de engenheiros segue esse nicho, e no caso o salário dos mesmos são bons, mas isso não tem nada haver com a linguagem, e sim com tipo de mercado.

1 curtida

O cara começa falando de portabilidade, depois vem falar de maior salário.

[quote]fabioEM : Cara,
O tópico não era para definir qual é a linguagem melhor, mas a mais qual linguagem que é mais multiplataforma, entenda, são coisas bem diferentes[/quote]

[quote=juliocbq][quote=fabioEM][quote=FernandoFranzini]Realmente abrangência do C/C++ é totalmente superior que o java! Um bom exemplo disso é a abrandecia da plataforma QT.
Entretanto, vale lembrar que a plataforma Java é para aplicações corporativas !! Ou seja, não existe “aplicação-corporativa” em mini processadores aonde o C chega.[/quote]
Isso que imaginei, essa questão me parece inegável. Agora, não entendo o porquê do fato da compilação ser necessariamente uma desvantagem no que refere uma linguagem ser multiplataforma. Até porque o Java usa ambas as técnicas, interpreta e compila e além do mais as VM são diferentes para muitos SO. Quando entrei na faculdade só se falava do Java e de sua impressionante portabilidade. Porém quando caí de paraquedas no mercado de trabalho, percebi que não era bem assim. E, que na verdade C/C++ ,apesar de serem mais antigas, continuam bem de pé. :lol: Um profissional inclusive que conheça bem a fundo C/C++ ganha bem mais que um profissional que manja bem uma linguagem de alto nível como o Java. Isso todo mundo sabe, pois são poucos esses profissionais. Um profissional que desenvolva C/C++ deverá estar trabalhando para SO, miniprocessadores ou Jogos,ou seja, tudo que rende bem mais dinheiro que aplicações coorporativas. Na verdade, um desenvolvedor de SO além de ser bom em lógica deve ser ainda melhor em matemática, coisa que poucos e eu tó dentro somos :wink: :wink: [/quote]

Isso já não procede. Pode ser uma falsa ilusão pelo seguinte:

Sobre a compilação é uma extrema vantagem não ter que fazê-lo, já é trabalho a menos. Java é praticamente imbatível nas plataformas que funciona e se aplicado para as soluções corretas.
Por exemplo, eu não faria um sistema de web services com c++, apesar de poder. C++ não é para isso, além de existirem centenas de frameworks para java com qualidade muito superior aos que existem para c++(que normalmente boa parte da funcionalidade precisa ser implementada no braço se você quer boa qualidade de software).

Como a maioria(90%) dos empregos para programadores de linguagem c é focada no desenvolvimento de hardware, grande parte de engenheiros segue esse nicho, e no caso o salário dos mesmos são bons, mas isso não tem nada haver com a linguagem, e sim com tipo de mercado.[/quote]

Não procede o quê? A compilação ou o salário?

Por que é uma enorme vantagem?Qual o problema nisso? Algumas pessoas aqui afirmaram que um código por exemplo em C/C++ roda tranquilamente em diversas plataformas.

Agora, o fato de ser compilável pode ser um problema para outras linguagens, mas com certeza não vale para o C/C++. Pois a maioria se não todos os SO são feitos em grande parte nessa linguagem :lol: :lol: :lol: Por essa razão acho o C/C++ está frente quando o assunto é portabilidade.
Com relação ao salário não entendi seu questionamento

[quote=Stepo]O cara começa falando de portabilidade, depois vem falar de maior salário.

[quote]fabioEM : Cara,
O tópico não era para definir qual é a linguagem melhor, mas a mais qual linguagem que é mais multiplataforma, entenda, são coisas bem diferentes[/quote][/quote]
Sei que doi fazer o quê :lol: :lol: :lol:

bom topico realmente tem coisas que nos impressionam bastante nesse mundo de TI.

aqui no Brasil acho que nao tem muito campo pra mecher com C++ pelo menos nao vejo muita procura.

É porque você não está no nicho. Até hoje, todos os empregos que peguei exigiram conhecimento em C++.
Tem menos vaga que java, com certeza, mas existe bastante procura também. Basta ter empresas que queiram desenvolver para Windows, ou aplicações que mexam com vídeo, segurança, tempo real, integrem com hardware ou jogos.

As vagas geralmente estarão na indústria, não no comércio. Por isso, a forma de procura-las também é outra.