Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Amoguai

Server Side, Client Side, what Side?

Mensagens Recomendadas

Amoguai

Boa noite!

No contexto da internet, quando se fala de programas client-side ou server-side, diz-se que o código fonte é lido pelo browser ou servidor, respectivamente e executa as funções consoante o que esse código dita, sem nunca ser compilado, apenas re-interpretado de cada vez que é necessário.

Quando se tem um programa instalado no computador, não existe código fonte a ser interpretado, apenas existe linguagem de máquina.

Então eu pergunto, que nome se dá a este tipo de linguagem e programas que se executam no computador, independentemente do código fonte?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Não percebi. Geralmente esses termos aplicam-se a linguagens Web, e a maioria não tem de ser compilada.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Eu sempre lhes chamei Aplicações de Desktop, mas duvido que seja o termo profissional. :P


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Reformulaste, mas continua confusa...  :cheesygrin:

Server-side e client-side não tem que ver se o código é compilado ou interpretado; é apenas a distinção entre o que corre do lado de lá e do lado de cá. Por exemplo, uma extensão do PHP em C é compilado e é server-side, assim como o PHP, que é interpretado. Por outro lado, o HTML é interpretado e é client-side, mas o Flash (swf) também é client-side e é compilado (not quite, mas já lá vou).

Nem todos os programas desktop - e esta distinção, hoje em dia, pode ser muitíssimo enganadora - são linguagem máquina. Normalmente, os programas mais violentos, tipo jogos, são compilados em linguagem máquina, tendo partido, provavelmente, do C++, ou semelhante. No entanto, vê-se cada vez mais programas em linguagem intermédia, ou linguagem para VM. É o caso das linguagens .NET, do Java e até Flash.

O executável, binário ou pacote não estão em linguagem máquina, mas sim numa espécie de pré-lavagem dos computadores, prontos para serem dados a comer a uma Virtual Machine (a runtime .NET, a Java VM e o Flash Player, nos exemplos anteriores), que por sua vez vai criar a linguagem máquina apropriada ao ambiente em que se encontra, por exemplo, se é 32 ou 64 bit, se é Windows, Linux ou Mac OS, e por aí fora...

Era isto que querias saber?


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Amoguai

E eu não conseguia perceber melhor, excelente explicação  :P   mjamado

Já agora, por uma questão de argumento e um pouco de brain-storming: distingo 3 tipos de linguagens, as interpretadas, as semi-compiladas (para uma máquina virtual) e as compiladas. Intuitivamente parece-me que as linguagens compiladas têm problemas de compatibilidade, ou seja, se funcionam em Windows, não funcionam em Mac OS e vice-versa, enquanto que as semi-compiladas, tendo a VM a fazer a ponte, correm em qualquer sistema susceptível de ter a VM instalada.

Parece-me então que as VM's são uma solução à falta de suporte a essas linguagens por parte dos browsers. Não precisamos de VM's de HTML, CSS, nem JavaScript, mas precisamos de VM's para ActiveX, Flash, e outras linguagens mais específicas. Resta saber que "pré-lavagem" é essa? Em que é que se diferencia do código fonte original e o porquê de não receberem o mesmo tratamento das linguagens nativas HTML, CSS e JavaScript que são carregadas no seu formato de código fonte original.

Quanto à pergunta original, suponho que não há designação específica para linguagens cujo propósito é serem compiladas e corridas no mesmo tipo de sistema em que foram feitas, tipo o C++ para jogos, ou será que há?  :D

Cumps,

Amoguai

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

As linguagens tem outras distinções; distinguir por aí não é... hmmm... intelectualmente honesto... A maior parte das linguagens só se prestam a ser executadas duma dessas maneiras, mas não é uma boa divisão. Em suma, cada macaco no seu galho.

As linguagens compiladas para o sistema de destino tem uma vantagem imensa sobre as outras: o resultado é, normalmente, mais compacto, mais rápido (muito mais) e com menos bugs. Como em tudo na vida, results may vary.

A questão da susceptibilidade de ter a VM instalada também dava pano para mangas... Por exemplo, a .NET só existe oficialmente para a plataforma Windows.

Aqui um pequeno aparte: HTML e CSS (assim como XAML na .NET 3+ e o MXML no Flex) não são linguagens de programação, mas sim linguagens de marcação ou de apresentação. Como tal, a comparação não faz sentido aqui. O que os browsers têm, para HTML e CSS é um parser e um conjunto de regras que definem a que é que as tags ou as regras correspondem a nível apresentacional. Por isso não vês, por exemplo, um <select> de forma igual no Opera e no IE, por muito que tentes dar a volta ao CSS correspondente.

O JavaScript é ainda outro caso bizarro. Apesar de ser uma linguagem de programação de direito próprio (afinal, deriva da especificação ECMAScript como, por exemplo, o ActionScript), não corre propriamente numa virtual machine - ou melhor, corre, mas cada browser tem o seu próprio motor, por vezes não respeitando mesmo as recomendações da ECMAScript (guess what, o IE é perito neste aspecto - o melhor motor, neste momento, é o do Google Chrome).

Mas se tentares implementar algumas das coisas que são de calcanhar numa linguagem mais poderosa, mesmo que seja de compilação intermédia, como por exemplo, ordenar um array significativamente grande, vais notar que até mesmo no Google Chrome a linguagem é muito, muito lenta.

Daqui podemos concluir que, por ordem de rapidez, são as compiladas, num destacadíssimo primeiro lugar, depois as de compilação intermédia e finalmente as interpretadas. Atenção, que é sempre possível usar alguns truques para acelerar algumas linguagens; por exemplo, o PHP também pode ser de compilação intermédia - duma forma meio estranha, é certo, mas pode (google it: Zend Optimizer). As linguagens de compilação intermédia também podem ser consideravelmente aceleradas se se conhecer bem a virtual machine e forçando o código a evitar alguns dos bottlenecks da mesma - vê esta posta no meu site pessoal para um exemplo disto em C#.

Quanto à tua questão, da forma como a colocaste agora, não, não há. É um aplicativo ou libraria compilada em código máquina, ponto. Se é server-side ou client-side, monolítica ou modular, standalone ou web-connected, como já disse, não tem nada que ver com que linguagem foi feita e de que maneira foi (ou não) compilada.

Ufa, mas que grande "posta"...  :smoke:


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Amoguai

Muito obrigado! Acho que tenho aqui pano para fazer as mangas da minha compreensão quanto ao mundo da programação.

E quanto ao apelo que fiz na secção de apresentações:

Aproveito para deixar o apelo a alguém que ande nesta roda à muito tempo que faça um post sticky mostrando um panorama geral, mais abstracto que técnico do mundo da programação. Uma espécie de resumo quanto às linguagens dominantes, as diferenças filosóficas, e outras, entre elas, de onde vimos e para onde vamos.

Secalhar ainda vou ser eu que vou fazer tal "posta" como dizes :P

Boa noite,

Amoguai

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Pedires "a alguém que ande nesta roda à muito tempo" para falar sobre as várias linguagens de programação duma forma abstracta, é pedires para veres batatada, pela certa.

Cada programador traz consigo a bagagem da experiência, de onde veio e para onde vai. No minuto que se discutissem as vantagens e as desvantagens duma distinção tão simples como linguagens funcionais ou imperativas, havia logo sangue...  :cheesygrin:


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Amoguai

Assumindo verdadeira a proposição "Great minds think alike", deixando impressões pessoais menos importantes para trás e sendo suficientemente abstracto com certeza que é possível fazer tal resumo, para benefício dos mais "novos" e até para dar um novo ponto de vista aos Velhos do Restelo. O objectivo não será tanto deixar impressões pessoais quanto deixar factos bem explicados e organizados e retirar daí uma conclusão, quanto mais não seja "aparentemente as coisas chegaram a um ponto optimizado e não há nada no horizonte que nos dê a impressão de mudança" o que sinceramente duvido que seja o caso. No mundo das tecnologias tudo muda em constante evolução, o truque é ter imaginação suficiente para que a conclusão que se tira não ser tão imediata que se torna obsoleta demasiado depressa :P

Cumprimentos,

Amoguai

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.