Por que não há uma API do Unix? [fechadas]

1

Por que não há a API do Unix? Quer dizer, como existe a API do Windows.

Eu sei que muitas coisas no mundo Unix são modulares, e essas coisas juntas criam um sistema inteiro. Isso parece bom, mas cria alguns problemas quando você tenta criar um aplicativo nativo do Unix.

Por exemplo, você deseja programar um bom processador de texto com um nome legal WP. A versão do Windows do WP será criada chamando a API do Windows. Você pode codificar isso diretamente em C ou usar qualquer uma das várias bibliotecas de wrapper existentes. Mas ainda assim, o programa deve ser construído chamando o winapi, que fornece todas as funcionalidades que um programador pode precisar para criar um aplicativo do Windows, desde chamadas básicas do sistema até GUI, 3D, multimídia ou qualquer outra coisa com mais de uma década de compatibilidade com versões anteriores. Se não fosse assim, o vinho nunca poderia existir.

Agora você quer criar uma versão Unix do WP. A biblioteca padrão C e C ++ e a API POSIX são muito estáveis e bem suportadas em quaisquer variantes Unix. O problema ocorre quando você tenta fazer mais. Então você precisa criar uma janela para o WP, mas como? Existe o X11, mas este não é o único. As pessoas acham que o X11 deve ser substituído e agora estão fazendo duas substituições incompatíveis, Wayland e Mir. Mesmo para o X11, existe o Xlib e o xcb. O xcb afirma que eles são "melhores", e é verdade em alguns aspectos, mas onde está a documentação? Você eventualmente escolhe o Xlib para executar a tarefa, mas o padrão X11 por si só define apenas recursos básicos. Qualquer outra coisa que você esperaria de um aplicativo GUI, como eventos de janela ou suporte de área de transferência, precisa ser tratada com extensões, chamando XInternAtom . Esta frase é meramente minha opinião pessoal, mas o uso de átomos em X é extremamente não intuitivo. E outro problema é que nem todos os gerenciadores de janelas do X suportam essas extensões. Então vamos deixar essa sujeira para os desenvolvedores do GTK + e do Qt, que quebram a compatibilidade retroativa para cada nova versão. É possível ter suporte arrastar e soltar portátil no Linux?

Parece-me realmente que a comunidade Unix está se matando no mundo da área de trabalho. Eu sei que as coisas que eu mencionei nem mesmo importam para configurar um servidor BSD, mas não importa se você já tentou construir um aplicativo Linux nativo portátil.

O que está inventando toda essa bagunça? Existe realmente um esforço para limpar isso e padronizar as coisas para o ambiente de desktop moderno do Unix? Por que não há a API do Unix? Alguma vez haverá um?

    
por xiver77 06.08.2015 / 12:28

3 respostas

5

It really seems to me that the Unix community is killing themselves in the Desktop world.

Eu acho que há um equívoco de que qualquer forma de Unix existe para competir no mercado de PCs domésticos. Existem algumas distribuições linux que têm esse foco; O primeiro foi realmente Ubuntu, mas vale a pena considerar que parte da visão original do Ubuntu era desenvolver um sistema operacional amigável que pudesse ser usado em partes do mundo onde ter que pagar centenas de dólares por computador por uma licença da Microsoft não era viável e poderia significar a diferença entre ter computadores (nas escolas, governo, etc.) e não tê-los.

Eu não fiquei atualizado sobre o quão bem-sucedido isso tem sido, mas em qualquer caso, parece-me que é um objetivo muito diferente do que querer sair da Apple ou algo assim. Maçãs e laranjas, como se costuma dizer. Ou maçãs e porcos-da-terra. 1 Este aardvark não é nada como uma maçã! Não é não. Por que você acha que é?

Now you want to create a Unix version of WP [...] You eventually choose Xlib to do the task

Somente se você for uma pessoa maluca que provavelmente não conseguirá completar um processador de texto com potencial de consumo em massa.

O software existe em camadas distintas que são montadas em pilhas. X é uma camada que é usada em várias plataformas como parte da pilha da GUI. Nessas plataformas, o X lib é usado para implementar bibliotecas de nível superior como Gtk e Qt, ambas com uma API portável ; eles podem ser usados no OSX e no Windows, nenhum dos quais usa o X. Nessas plataformas, uma biblioteca / API de nível inferior diferente é usada para implementar o Gtk e o Qt. Isso significa que programas de nível superior, como aplicativos GUI de usuário final, escritos para Gtk ou Qt, podem ser usados em qualquer lugar com alterações relativamente pequenas. 2

Essas são as bibliotecas que são usadas diretamente para implementar aplicativos de GUI em sistemas POSIX, e é por isso que a maioria desses aplicativos geralmente não é tão difícil de portar de um sistema POSIX "near compliant" para outro.

Então o "problema" ao qual você está se referindo não existe na maneira como você o apresentou. A comunidade Unix não está se matando, está fazendo exatamente o que pretende fazer.

1. Para explicar melhor o que quero dizer com isso, considere o papel do mercado livre na evolução do GNU / Linux vs. Este último é claramente, por intenção, o produto das forças do mercado livre, mas o primeiro caso é muito mais ambíguo. Como bons ocidentais, naturalmente colocamos a teoria em primeiro lugar e dizemos: "Bem, obviamente, um produto moldado pelo livre mercado é melhor do que aquele que não é". Mas isso não é bem verdade - o que realmente significa é que alguém estará propenso a vender melhor. Você parece estar perguntando por que não há mais esforço para fazer o produto vender melhor nesse sentido. A resposta, claro, é que há menos motivação para fazer isso, o que levanta a questão do que há motivação para fazer. O desenvolvimento do GNU / Linux (em particular) tem sido muito orientado pelos desenvolvedores para agradar a si mesmos , e não tanto para outras pessoas ou para um mercado de massa. Se isso produz um sistema melhor ou não, eu acho que depende de quão perto está sua perspectiva para as pessoas que o criaram. A história do UNIX envolve mais forças do mercado, mas é / foi um público altamente especializado. Dito de outra forma: é um sistema operacional técnico para pessoas técnicas, mas há uma toca de coelho disponível para o público em geral.

2. Por outro lado, se você escrever algo com a API do Windows, existe apenas um lugar onde você pode usá-lo sem grandes alterações. .

    
por 06.08.2015 / 14:11
12

Para ser chamado UNIX, você precisa passar por um processo de certificação que requer (entre outras coisas) que você implemente o padrão POSIX.

Então, sua pergunta é completamente inválida. Existe uma API do UNIX, chamada POSIX.

EDITAR: Esta é a lista de requisitos: link

    
por 06.08.2015 / 12:36
3

O Unix tem especificações / um padrão que eles esperam que você siga, POSIX, as coisas devem ser implementadas, até o desenvolvedor, é um padrão que devemos seguir se quisermos que nosso código funcione em muitas arquiteturas / plataformas / sistemas seja o que for, até o desenvolvedor no final do dia para acompanhar o que (esperançosamente) a maioria dos desenvolvedores está seguindo.

O Windows tem uma biblioteca de funções, a chamada API, é definida como pedra por ditado financeiro pela alta gerência (muitos vão argumentar, mas tudo o que a Microsoft é sobre o dólar mais baixo AFAIK ... Considerando que posix é sobre tentar se dar bem)

POSIX é como uma API, apenas sem nenhuma consideração financeira, apenas sobre o código tentando trabalhar em conjunto ... que não é um conceito microsoft, é lá ou estrada.

É assim que eu vejo; -}

EDITAR :::

Depois de ler o meu post, percebo que eu poderia ser um pouco tendencioso, que não era a intenção que os dedos apenas se movessem com a verdade, mas eu quero dizer o que eu disse, tendencioso removido ... se possível

    
por 06.08.2015 / 12:46