• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

hristosax

Vantagens do Linux para a programação?

54 mensagens neste tópico

Boas a todos.

Gostaria de saber quais as vantagens de ter um Sistema de núcleo Linux, uma distro, para a PROGRAMAÇÃO.

É Que normalmente falam na segurança e tal, mas para a programação não encontro nada de significativo.

Alguém me explica?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a linguagem for do .net só tens desvantagens em usar linux.

Mas falando das vantagens, da pouca experiencia q tenho em programar em linux, gosto da interacção com as bibliotecas de sistema.

Interagir com o linux numa aplicação C ou C++ é mto mais simples do q fazer a mesma tarefa em windows.

Não é à toa q as cadeiras de Sistemas Operativos nas universidades, na sua maioria, são dadas em linux.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende do objectivo do programa, mas idealmente um programa é multi-plataforma, e não é dependente das bibliotecas do SO.

Há muitas plataformas que te permitem programar para vários SOs, como C# usando Mono, Java, Python, C/C++ usando bibliotecas multi-plataforma, etc.

Se for para interacção com o SO e/ou hardware, sim, acho que a arquitectura UNIX em geral, incluindo Linux, é mais fácil e flexível, mas nesses casos a escolha é muitas vezes limitada pelos requisitos do programa.

Se a linguagem for do .net só tens desvantagens em usar linux.
Bom, é verdade que o Mono nunca estará a par do .NET runtime visto que o persegue, mas se o usares tens a vantagem do teu programa funcionar em Linux, BSD, UNIX, Mac OS X, Solaris e Windows, em vez de estares limitado ao Windows.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hoje em dia não tens grandes vantagens.

O sistema de pacotes é bastante útil para sacar bibliotecas e não teres de "linkar" com cópias locais. As distribuições também costumam trazer muitas ferramentas na shell que facilitam a vida em certas situações. Diria mesmo que uma das maiores vantagens é a facilidade com que consegues ter um ambiente pronto a desenvolver, mas hoje em dia no Windows ou no Mac OS X também é bastante fácil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hoje em dia não tens grandes vantagens.

O sistema de pacotes é bastante útil para sacar bibliotecas e não teres de "linkar" com cópias locais. As distribuições também costumam trazer muitas ferramentas na shell que facilitam a vida em certas situações. Diria mesmo que uma das maiores vantagens é a facilidade com que consegues ter um ambiente pronto a desenvolver, mas hoje em dia no Windows ou no Mac OS X também é bastante fácil.

Pois...  é que não vejo nenhuma vantagem :P

Não vejo razão para eu instalar Linux  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não vejo razão para se instalar Linux  :dontgetit:

Não quererias dizer:

Não vejo razão para eu instalar Linux  :dontgetit:

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não quererias dizer:

?

Sim, era isso que queria dizer :P

Ja vou mudar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois...  é que não vejo nenhuma vantagem :P

Não vejo razão para eu instalar Linux  :dontgetit:

Há outras vantagens que não estão relacionadas com fazer programas "a sério", mas que são interessantes para um programador. Uma é a maior parte dos programas ser open-source, o que significa que podes aprender muito lendo o código de algumas. Outra é todo o sistema ser mais "aberto" e modificável. O Fuse, por exemplo, é fantástico - permite-te fazer um sistema de ficheiros em menos de 100 linhas. E os repositórios estão cheios de aplicações para a linha de comandos, o que é excelente para fazer shell scripts.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não acho pessoalmente mesmo programando aplicações multi-plataforma prefiro usar Linux, a Shell facilita em muitos determinas operações coisa que o misero MS-DOS não faz e um bom exemplo disso é programar Ruby em Windows :S

Para além disso como foi mencionado o sistema de pacotes no que toca a instalar libs facilita em muito a vidinha do programador, tirando .NET não programa mais nada em Windows e mesmo assim é só porque o Mono deixa um cadinho a desejar face ao .NET Framework.

Bom mas também já não uso Windows à uns anitos lol são em Virtual Machine.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há outras vantagens que não estão relacionadas com fazer programas "a sério", mas que são interessantes para um programador. Uma é a maior parte dos programas ser open-source, o que significa que podes aprender muito lendo o código de algumas. Outra é todo o sistema ser mais "aberto" e modificável. O Fuse, por exemplo, é fantástico - permite-te fazer um sistema de ficheiros em menos de 100 linhas. E os repositórios estão cheios de aplicações para a linha de comandos, o que é excelente para fazer shell scripts.

É isso de ser modificavel que eu não percebo!

O que é que eu posso mudar no sistema?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo.

Desde simplesmente mudar o gestor de janelas, alterar o sistema de arranque (que é baseado em shell scripts, ou seja, fácil de alterar) a recompilar todos os programas (incluindo o kernel).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo.

Desde simplesmente mudar o gestor de janelas, alterar o sistema de arranque (que é baseado em shell scripts, ou seja, fácil de alterar) a recompilar todos os programas (incluindo o kernel).

E em que linguagem?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso depende, não é tudo na mesma linguagem. O Kernel é em C, mas também ninguém altera directamente o kernel, podes é compilá-lo com uma diferente configuração, ou criar módulos.

Mas há muita coisa além do kernel, depende do que queiras mudar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não acho pessoalmente mesmo programando aplicações multi-plataforma prefiro usar Linux, a Shell facilita em muitos determinas operações coisa que o misero MS-DOS não faz e um bom exemplo disso é programar Ruby em Windows :S

Para além disso como foi mencionado o sistema de pacotes no que toca a instalar libs facilita em muito a vidinha do programador, tirando .NET não programa mais nada em Windows e mesmo assim é só porque o Mono deixa um cadinho a desejar face ao .NET Framework.

Bom mas também já não uso Windows à uns anitos lol são em Virtual Machine.

Tens a Power Shell para Windows onde podes fazer uns scripts em .net. Esta shell é mto completa e é possivel fazer mtas das coisas q se faz numa Console Application em C# por exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não acho pessoalmente mesmo programando aplicações multi-plataforma prefiro usar Linux, a Shell facilita em muitos determinas operações coisa que o misero MS-DOS não faz e um bom exemplo disso é programar Ruby em Windows :S

cmd.exe (linha de comandos em Windows) != MS-DOS

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a tua aplicação correr nativamente no SO (sem virtual-machines, interpretadores de comandos e afins) então há vantagens em usares um sistema operativo baseado em unix.

Por exemplo, acesso a funcionalidades do SO como sinalização, manuseamento de processos, sockets, etc. Se estiveres a compilar a tua aplicação no windows tens que usar o leque de funcionalidade que a microsoft oferece. Enquanto que em linux por exemplo, podes simplesmente usar a tecnologia que ainda aí desde há 20 ou 30 anos e que é sólida que nem granito. E está minuciosamente especificada e documentada.

O que tem acontecido é que têm aparecido por aí ports de bibliotecas UNIX para windows, isso tem melhorado em muito a compatibilidade de milhares de aplicações. Ainda assim há frequentemente glitches e pode ficar-se encravado por causa de uma dependenciazita da treta.

É por  este motivo que tudo quanto é software mais ou menos crítico, por norma não está feito propriamente para um SO como o windows.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, o que disseste é meio ridículo.

Toda a API do Windows também está documentada no MSDN, normalmente muito melhor que as equivalentes no Linux. Em Windows também tens as mesmas coisas que disseste em Linux, por isso, não vejo nenhuma vantagem por aí.

Podes ter alguma vantagem a nível de portabilidade, porque a API do Linux é em grande parte compatível com outros sistemas, mas isso não torna um sistema melhor que outro só por isso. Se formos por aí, com o WINE, também a do Windows é portável em quase tudo o que é sistema operativo. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não sei quanto à documentação, mas a compatibilidade do Linux com muitos outros sistemas baseia-se neles implementarem um standard (POSIX), e não em layers de compatibilidade como o Wine, que são obviamente muito mais incompletas e falíveis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não sei quanto à documentação, mas a compatibilidade do Linux com muitos outros sistemas baseia-se neles implementarem um standard (POSIX), e não em layers de compatibilidade como o Wine, que são obviamente muito mais incompletas e falíveis.

Estava no gozo. :bounce:

Já agora, o Windows tem uma layer de compatibilidade com POSIX. Por isso se esse for o caso podem programar POSIX em Windows, mas pelo que vi agora na Wikipedia, não vai ser mais desenvolvido, e a versão que trás do GCC é bastante velha, por isso não sei se será boa ideia. Também existe o Cygwin, que já usei com algum sucesso.

Mas para qualquer programa mais complexo, costumam usar-se bibliotecas que abstraem essas interfaces que são diferentes entre sistemas operativos, por isso esse problema normalmente não ocorre na prática.

Linguagens/ambientes modernos, como Python, Java e .NET não têm esse problema, e são portáveis entre sistemas operativos, por isso também são alternativas viáveis a esse problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, o que disseste é meio ridículo.

Toda a API do Windows também está documentada no MSDN, normalmente muito melhor que as equivalentes no Linux. Em Windows também tens as mesmas coisas que disseste em Linux, por isso, não vejo nenhuma vantagem por aí.

Podes ter alguma vantagem a nível de portabilidade, porque a API do Linux é em grande parte compatível com outros sistemas, mas isso não torna um sistema melhor que outro só por isso. Se formos por aí, com o WINE, também a do Windows é portável em quase tudo o que é sistema operativo. :P

A questão é que "API de Linux" é um termo que não tem grande significado porque o sistema é tudo aberto, podes mudar o que te apetecer onde e quando te apetecer, não precisas de interfaces protecionistas porque não há nada a ser protegido. Não é que desate tudo quanto é programador a hackar a funcionalidade base do seu sistema., mas muitos o foram fazendo e partilhando o seu trabalho até chegarmos a tudo o leque de software aberto que temos hoje. Muito esforço unido, naturalmente selecionado por qualidade (o que era mau naturalmente foi substituido pelo que é bom).

O MSDN é fixe, tem ajudado a microsoft a subuir muito na considerção de muitos (onde me incluo), mas mais completo que a documentação do projecto GNU? Discordo completamente.

http://www.gnu.org/manual/

Linguagens/ambientes modernos, como Python, Java e .NET não têm esse problema, e são portáveis entre sistemas operativos, por isso também são alternativas viáveis a esse problema.

Isso é precisamente a consequència directa da existencia de sistemas operativos com as limitações dos windows.

Eu falei especificamente para o caso de aplicações que correm nativamente no SO. Nesse campo o windows é, na minha opinião, claramente inferior. Por esse motivo é que foram sucedendo tecnologias contornem esses problemas. Se o windows fosse aberto, não tenhas dúvidas que muita coisa ia ser substituida pelo que está no projecto GNU e o uso de linguagens compiladas nativamente disparar. Infelizmente isso não se pode fazer, assim como não se pode pegar nas coisas boas que a microsft faz e usa-las a nosso belo proveito onde quisermos e como quisermos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A questão é que "API de Linux" é um termo que não tem grande significado porque o sistema é tudo aberto, podes mudar o que te apetecer onde e quando te apetecer, não precisas de interfaces protecionistas porque não há nada a ser protegido.

Hmm, não percebi bem onde queres chegar com isso. O sistema ser aberto não significa que vás alterar o código por tudo e por nada. Tem de existir uma interface estável. As APIs que falo são as existentes no standard POSIX e implementadas no kernel e a GNU C Library.

Não é que desate tudo quanto é programador a hackar a funcionalidade base do seu sistema., mas muitos o foram fazendo e partilhando o seu trabalho até chegarmos a tudo o leque de software aberto que temos hoje. Muito esforço unido, naturalmente selecionado por qualidade (o que era mau naturalmente foi substituido pelo que é bom).

A base do sistema foi uma cópia de um sistema proprietário (UNIX), em que grande parte ainda se baseia. Foram adicionando interfaces novas, mas se fores por aí, deixa de fazer sentido a discussão, porque ficas limitado ao Linux, já que são APIs específicas do kernel.

E o que era mau não foi todo naturalmente substituido por bom. Ainda existe muito "crap software" que não é substituido porque não existe ninguém fazer melhor, ou foi aceite mesmo quando existem alternativas melhores. O que não falta são exemplos disso!

O MSDN é fixe, tem ajudado a microsoft a subuir muito na considerção de muitos (onde me incluo), mas mais completo que a documentação do projecto GNU? Discordo completamente.

http://www.gnu.org/manual/

Concordo, a documentação de alguns projectos de Linux é excelente: Python, GNU C Library, entre outros. O kernel é perfeito oposto disso, muito mal documentado. Depois tens coisas como o GTK+, Pango, Cairo, que embora tenham alguma documentação, é muito pobre. A Microsoft deixa o Linux a milhas em termos de documentação. Lê a documentação de um sistema como o Solaris, e vais ver o que é boa documentação de um kernel e sistema.

Isso é precisamente a consequència directa da existencia de sistemas operativos com as limitações dos windows.

Quais limitações?

Eu falei especificamente para o caso de aplicações que correm nativamente no SO. Nesse campo o windows é, na minha opinião, claramente inferior. Por esse motivo é que foram sucedendo tecnologias contornem esses problemas.

Não concordo. Essas tecnologias foram sucedendo porque são ambientes mais produtivos e mais seguros.

E também porque as linguagens de programação e o nosso conhecimento foi evoluindo. Há 20 anos, ninguém pensava em correr aplicações grandes em interpretadores. Tinhas os interpretadores de BASIC para pequenas brincadeiras de hobby, mas as aplicações comerciais tinham de ser feitas em linguagens compiladas para código máquina. Hoje em dia tens poder computacional para usar linguagens mais ineficientes, mas que fazem mais por ti. O seu objectivo é facilitar a vida ao programador.

Pensas que criaram o Mono porquê? Porque não havia nenhum ambiente decente para desenvolver aplicações em Linux. O Java era lento e proprietário, o Python era lento (e ainda é, embora sirva para a maioria das coisas). O C e C++ não tinham tools decentes (o que ainda se verifica, em certa parte) e também porque são linguagens perigosas. Facilmente podes introduzir bugs que não são verificados, como aceder a posições inválidas de arrays.

O grande objectivo do Mono não é emular o .NET em Linux, é criar um ambiente de desenvolvimento decente. Foi essa a razão da sua criação. E diria que tiveram sucesso, o Mono é claramente um dos melhores ambientes para desenvolver aplicações em Linux, e digo isto por experiência própria: já fiz aplicações para GNOME em C (Gtk+), C++ (gtkmm), Vala, Python (PyGtk) e C# (Gtk#). Nunca experimentei os bindings de Java, por isso não comento essa parte. :P

Se o windows fosse aberto, não tenhas dúvidas que muita coisa ia ser substituida pelo que está no projecto GNU e o uso de linguagens compiladas nativamente disparar. Infelizmente isso não se pode fazer, assim como não se pode pegar nas coisas boas que a microsft faz e usa-las a nosso belo proveito onde quisermos e como quisermos.

Já agora tenho alguma curiosidade em saber que coisas são essas que seriam substituidas e porque é que o uso de linguagens compiladas para código máquina iriam disparar, pois acho essa afirmação ridícula.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
The Mono Project is an open development initiative sponsored by Novell to develop an open source, UNIX version of the Microsoft .NET development platform. Its objective is to enable UNIX developers to build and deploy cross-platform .NET Applications.

Já havia compiladores de linguagens de mais alto nível para Linux, basta ver o Emacs.

Já agora, quanto ao Java ser lento:

chartvs.php?r=eNodjsEVRDEIAlvKV1Cswv67WdyTTzJOIDJZi2HVW74MzvJLCgsGS36bVC8jIz%2BHmIxFtS58iqDDgs7SQi0zrLMlXpgcRFvt5TOiyTkSZRm%2F0sk4CdxHNIlRRzrs13mVNFh6BX3w3tUVbtBKuiAzPyNRqj4L9O%2FpHkYgvR%2FWkTKP&m=eNozMFPwTy5RMDIwsFQoNTZSyAMAJHYEIA%3D%3D&w=eNpLLs5ILCrwz0osSwQAGtsEcw%3D%3D

O Mono usa menos memória na maior parte do casos, mas é sempre mais lento, chegando a ser 3x mais lento!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto ao Mono, lá por o objectivo do projecto ser uma implementação do .NET para Linux (claramente se a malta do Mono decidiu usar a base da plataforma .NET da Microsoft, pelo menos tenta ser o mais compatível possível com ela), não significa que tenha sido o objectivo da sua criação.

Aqui fica um post de um dos gajos que está desde o ínicio a trabalhar no projecto: http://jeffreystedfast.blogspot.com/2009/09/mono-not-chasing-tail-lights.html

Mono was conceived by the Ximian folks because of their experience with Evolution. They were writing big Linux desktop apps. Writing them in C sucked. Writing them in C++ sucked slightly less. Writing them in Python sucked far less in some ways and far more in other ways. Writing them in any FOSS-friendly language available was a nightmare. They saw C#. They saw it was like Java, except it fixed many of the things that sucked about Java. They thought, "it would be sweet if we had a language like that to develop in."

E o resto é história.

Já havia compiladores de linguagens de mais alto nível para Linux, basta ver o Emacs.

Não sei bem a que propósito é que isso vem. Explica-te. :P

Já agora, quanto ao Java ser lento:

(...)

O Mono usa menos memória na maior parte do casos, mas é sempre mais lento, chegando a ser 3x mais lento!

Eu disse o Java na altura!! E além disso benchmarks de pequenas aplicações não significam nada. Ainda por cima usam switches como -server. Não sei bem o que isso faz, mas deve usar tempo de startup para pre-compilar tudo para código máquina primeiro, para ser mais rápido na execução. Anyway, eu nunca disse que o Mono era mais rápido que o Java.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era só um pormenor, esse tipo de benchmarks não prova grande coisa em utilização real.

Não sei bem a que propósito é que isso vem. Explica-te.
É só porque tu disseste que as alternativas eram Java/Python e C/C++, mas havia Lisp e ML, que eram "seguras" e compiladas.

O que me chateia é que já tenho uns seis intérpretes instalados, when will this end? :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora