paulo1205
(usa Ubuntu)
Enviado em 22/08/2016 - 15:17h
oblinez escreveu:
Estou aprendendo programação para Windows, sozinho e na raça! Mas Linux eh inúmeras vezes mais seguro que Windows em questão online, servidores ou qqr tipo de aplicação para rede
Isso já foi bem mais verdadeiro. Hoje em dia, a balança está bem mais equilibrada.
pois então... Que tipo de programação eh feita para Linux sei que eh diferente da programação para Windows...
Por que você supõe “tipos de programação” diferentes ou, antes, o que você quer dizer com isso?
Eis o cenário:
a) maioria das linguagens de programação disponíveis para um sistema existem também no outro;
b) muitas ferramentas auxiliares ao desenvolvimento também são compartilhadas;
c) no mundo cliente/servidor, que pareceu ser o foco da sua pergunta, há muito menos diferenças do que quando se pensa em programação para desktop ou tela portátil;
d) existem bibliotecas e
frameworks voltados especificamente para compatibilidade, interoperabilidade e portabilidade (exemplos, em múltiplos níveis: Boost (comunicação em rede, controle do SO), Qt (GUI, comunicação em rede, multimedia), OpenGL (gráficos 2D e 3D de alto desempenho), FLTK (GUI), e os próprios Java (incluindo JEE) e .NET Core, entre outros);
e) muitas empresas grandes perceberam que uma forma de gerar receita é aumentar a base instalada capaz de executar software seu e de seus clientes e, por isso, passaram, em muitos nichos (mas não todos), da postura de limitar escolhas para a de favorecer a compatibilidade (a própria Microsoft tem, nos últimos tempos, têm lançado produtos para Linux e BSD, como o já mencionado .NET Core ou o Visual Studio Code, além de firmar parcerias com empresas que atuam especificamente no mercado de Linux);
f) como criador de software, os conceitos, padrões de desenvolvimento e técnicas de programação aplicados por você provavelmente devem ser mais ou menos os mesmos em qualquer linguagem de programação e em qualquer arquitetura de programação.
Por outro lado, existem complicadores. Para cada ponto acima, pode-se fazer um contraponto:
a) existem linguagens voltadas para um sistema em particular, que ou não existem no outro ou são difíceis de encontrar, ou não têm o mesmo grau de funcionalidade;
b) idem para ferramentas;
c) no mundo do que aparece na frente do usuário, os desafios do programador são maiores (por exemplo: a aplicação tem de ter o mesmo aspecto das demais aplicações de cada plataforma -- eu, por exemplo, detesto aplicação com cara de aplicação de celular no meu desktop, e acho que aplicação com cara de desktop no celular vai ficar muito difícil de ser manipulada);
d) existe, sobretudo entre programadores mais antigos, resistência a deixar aquilo com que já trabalham para usar recursos diferentes e mais modernos (os mais modernos tendem a ser também os mais portáteis entre arquiteturas), e há também quem até adote os
frameworks portáteis, mas que perverte ou compromete sua portabilidade, através do uso de recursos particulares de uma plataforma ou pelo uso misto de recursos do
framework com outros fora do
framework;
e) ainda existem muitos nichos em que essa abertura não aconteceu, e há também aqueles em que o movimento foi inverso (quando uma empresa percebe que tem uma fatia suficientemente grande do mercado, acaba se sentindo dona desse mercado);
f) se você for um programador inconsistente, ou que se deixe encantar mais pelas particularidades da ferramenta/plataforma do momento do que pelos requisitos funcionais do projeto a ser implementado, será mais difícil para você assimilar mudanças entre ambientes ou o desenvolvimento voltado a múltiplos ambientes simultaneamente.