A história dos sistemas operacionais [infográfico]


A história dos sistemas operacionais [infográfico]

Fonte: Tecmundo

Sistemas Operacionais: Principais Interfaces de uso


     Os sistemas operacionais fornecem abstração de hardware para que seus recursos possam ser usados de maneira correta e padronizada, mas para ser possível operar um computador, é necessário fornecer também uma interface para que o usuário possa desfrutar dos recursos do sistema. Atualmente as principais interfaces de uso são as seguintes:

Interface de terminal

     A interface de terminal, também chamada "CLI" (Command Line Interface) funciona exclusivamente com teclado e mouse. Os comandos são digitados a partir de um prompt e são interpretados por um interpretador de comandos, conhecidos também por shells, bastante comuns em sistemas padrão POSIX. Um exemplo de interpretador de comandos seria o Bash. Usada geralmente por usuários avançados e em atividades específicas, como gerenciamento remoto, utiliza poucos recursos de hardware em comparação a interface gráfica.

Interface textual


     Assim como a interface de terminal, a interface textual também é baseada em texto, porém também tem à disposição um ambiente de trabalho composto por menus, janelas e botões. Como exemplo MS-DOS.

Interface gráfica


     Nesse tipo de interface, também chamada GUI (Graphic User Interface) além de menus, janelas e botões também existem figuras, tanto vetoriais quanto fotografias. O usuário interage com esse tipo de interface usando o mouse, podendo também usar o teclado e teclas de atalho, ou então usando toques e gestos em touchscreens.

Interface de voz 

     Interfaces de voz, ou VUI (Voice User Interface), são aquelas em que o usuário interage com o sistema por meio de comandos sonoro, a exemplo o Google Now (android), Cortana (WinPhone), Siri (iOS).

Fonte: wikipedia

O mercado que cerca os Softwares como Serviço



     A importância dos saaS no mercado pode ser percebida logo na sua linha de produção e distribuição, Com esses serviços, não há necessidade de produzir material físico ou contratação de funcionários para tal, já que tudo será disponibilizado online, bastando apenas um pequeno grupo para manter o software sempre atualizado e corrigido. Com a rede, a flexibilidade se torna gigante, já que se torna possível acompanhar todos os dados de forma dinâmica e em tempo real, permitindo alterações de acordo com a demanda de uma forma muito mais ágil e econômica.
     Com tais possibilidades de administração de dados, os riscos de investimento são automaticamente diminuídos, partindo do princípio que o fornecedor trabalhará com menos funcionários e uma demanda sob controle em tempo real. Assim, pode-se considerar o saaS como um serviço de redução de gastos, riscos de investimento e maior controle por parte do fornecedor, que leva agilidade ao usuários.
     Entretanto, esse sistema também contém algumas complicações específicas, Por necessitar de uma conexão a rede para ser utilizado, o serviço se torna disponível apenas para usuários com acesso a internet, onde a estabilidade é levada em consideração. Esse fato, em países subdesenvolvidos, é ainda mais agravante devido às tecnologias utilizadas pelos mesmos nesse fator.
     Outro problema a ser encarado é a total dependência de seu fornecedor para que o serviço se mantenha sempre atualizado e corrigido. Qualquer falha é o bastante para que vários usuários sejam prejudicados.

 Mercado

   O mercado dos saaS é bem abrangente, já que busca a facilidade no maior número de tarefas possíveis. Dentre as áreas, podemos citar:

BIG DATA – As empresas de grande armazenamento de dados já usam parte de seus produtos nesse sistema.

CLOUD SERVICES – Empresas de hospedagens, cloud computing e servidores utilizam a computação na nuvem para oferecer serviços através de assinaturas.

E-LEARNING – Cursos online, escolas digitais e outras ferramentas possuem total aderência ao modelo SaaS.

JOGOS ONLINE – os Clubes de jogos online oferecem assinatura de jogos através de mensalidades e planos.

APLICATIVOS – Apps de músicas, filmes e podcasts já são febre entre jovens e profissionais de tecnologia.


Fontes:
Oficina da net, Saas - Software as a service: O que é? Disponível em: <https://www.oficinadanet.com.br/artigo/business_intelligence/saas-software-as-a-service-o-que-e>. Acesso em 25/11/2015.
Vindi, SaaS – Software as a Service. Disponível em <https://blog.vindi.com.br/saas-software-as-a-service/>. Acesso em 09/12/2015.

Introdução a 'Software as a Service'




 O que são saaS? A princípio, pode-se indicar o significado de sua sigla, que provém de Software as a Service (Software como Serviço). Seguindo por isso, saaS são basicamente sites que utilizam de computação em nuvem, ou seja, tudo que o usuário irá utilizar está armazenado em servidores, sem necessidade alguma de download ou instalação.
 A sua utilidade provém do princípio de poupar o usuário de precisar manter vários arquivos e programas nos computadores, programar ou até mesmo sair de casa em busca de revistas e locadoras. Como utiliza de computação em nuvem, os saaS são simples, ágeis e flexíveis, a ponto de necessitarem apenas de conexão a rede para que o usuário possa aproveitar de seus serviços.
 A partir deste conceito, torna-se mais simples encontrar exemplos desses serviços em nosso dia a dia. Podemos citar a Netflix como um dos mais impactantes nesse mercado. Seu sistema permite que, partindo de uma assinatura mensal, o usuário possa aproveitar filmes, séries e afins de seu site, que transmite via streaming todo o conteúdo onde é necessária apenas uma conexão estável com a rede.



Fonte:
TecMundo, O que é SaaS e WaaS? Disponível em: <http://www.tecmundo.com.br/video-game-e-jogos/2616-o-que-e-saas-e-waas-.htm>. Acesso em 25/11/2015.

Tipos de Sistemas Operacionais



Existem 4 tipos básicos de sistemas operacionais:


  • Sistema operacional de tempo real: A função do Sistema operacional de tempo real é gerenciar os recursos do computador para que uma operação específica seja sempre executada durante um mesmo período de tempo. É utilizado para controlar máquinas, instrumentos científicos e sistemas industriais.


  • Monousuário, mono tarefa: É o sistema operacional no qual um único usuário faz uma coisa por vez. Um exemplo é o Palm OS dos computadores Palm.


  • Monousuário, multitarefa: É o sistema no qual um usuário pode executar diversas tarefas ao mesmo tempo, sendo este o mais utilizado em computadores de mesa, a exemplos do Windows e MacOS.

  • Multiusuário: Um sistema operacional multiusuário permite que diversos usuários utilizem simultaneamente os recursos do computador. Unix, MVS (sistemas operacionais mainframe) são exemplos de sistemas operacionais multiusuário.

Fonte: http://tecnologia.hsw.uol.com.br/sistemas-operacionais3.htm

Análise semântica, léxica e sintática nas linguagens de programação

               
                O conteúdo dessa postagem visa complementar os conceitos sobre interpretadores e compiladores, que foram citados, porém não explicados na medida da sua importância.
Como foi dito na postagem anterior dessa coluna do blog, os compiladores apresentam 3 etapas de verificação do código fonte (semântica, sintática e léxica), enquanto os interpretadores possuem apenas 2 (semântica e sintática).
                A análise léxica consiste em ler o código código fonte caracter a caracter para identificar constates, comentários, palavras reservadas, operadores, identificadores, ignorar tabs e espaços em branco, processar includes, se for o caso.
                Por outro lado, a análise sintática é responsável por identificar na sequência de elementos léxicos as construções da linguagem, como por exemplo, as estruturas condicionais. Essa análise irá verificar a condição da estrutura e a quais comandos ela está associada.
                Já a análise semântica tem por objetivo verificar se as construções identificadas pela análise sintática estão de acordo com as "regras" da linguagem. Por exemplo, em C, caso uma variável não tenha sido anunciada antes de ter sido citada, o compilador acusará esse erro no código fonte.

UNIVERSIDADE DE CAMPINAS, Construção de compiladores. Disponível em: <http://www.ic.unicamp.br/~vanini/mc910/Parte1.pdf>. Acesso em: 05/11/2015. 







Compiladores e interpretadores: qual a diferença?


            
            O ato de implementar programas computacionais envolve uma série de conhecimentos, alguns deles podem ser determinantes para a execução adequada e estável dos primeiros. Nesse ponto entram em cena os interpretadores e compiladores, programas especiais responsáveis por converter uma linguagem de alto nível (produzida pelo programador) em uma linguagem que possa ser compreendida pela máquina – os códigos binários.  Programa fonte é o nome dado ao programa original, em linguagem de alto nível, enquanto para o programa em linguagem de máquina é dado o nome de programa objeto. Costuma-se chamar os compiladores, interpretadores apenas de compiladores, porém, como já foi dito, é importante conhecer as diferenças entre eles.
            Os compiladores caracterizam-se por transformar o programa fonte por completo em programa objeto, ou seja, eles só podem ser executados caso não haja nenhum erro no programa fonte. A análise do programa observa aspectos léxicos, sintáticos e semânticos da linguagem em que está o código. Programas convertidos por meio de compiladores caso sejam editados precisam obrigatoriamente serem recompilados para a aplicação das modificações, o que pode não ser conveniente na fase de desenvolvimento ou quando a programação envolve uma série de modificações. Por outro lado, programas objeto gerados por estes costumam ter execução mais rápida, apesar de exigir maior capacidade de processamento do computador para guardar as informações prévias e posteriores dos comandos. Este último detalhe costumava ser um obstáculo à utilização de compiladores no desenvolvimento de programas para computadores pessoais em virtude da reduzida capacidade de processamento destes, entretanto com a ampliação crescente do poder de processamento dos computadores inversamente proporcional ao espaço necessário para cada componente, essa realidade tem mudado. 
            Caracterizado por uma interpretação do código realizada linha a linha, os interpretadores contam com menos etapas na conversão do programa, no entanto o programa fonte precisa ser lido cada vez que o programa resultado precisa ser executado, isso torna o método mais lento. A utilização de interpretadores pode ser mais adequada para programas que necessitam passar por modificações constantes, pois com o uso de interpretadores não é preciso recompilar todo o código. Cada linha de comando é interpretada por vez sendo a anterior esquecida, este fato diminui a quantidade necessária de memória, uma vez que menos dados do programa ficam armazenados.

Exemplos de linguagens tipicamente interpretadas são: C#, Java, PHP, Python e JavaScript.

Exemplos de linguagens tipicamente compiladas são: C, C++, Objective-C, Pascal, Visual Basic.

É importante citar que na linguagem Java a linguagem é primeiro compilada e depois interpretada por uma máquina virtual, o que confere a esta linguagem um caráter multiplataforma, pois desse modo um mesmo código fonte pode ser transformado em programa que rode em vários sistemas diferentes através da máquina virtual. O código fonte é transformado em byte code e este, por sua vez, é interpretado pela máquina virtual. O Bytecode tem sintaxe similar ao código de máquina e cada comando ocupa 1 byte.

Universidade Federal de Santa Catarina, Interpretadores, Compiladores e Tradutores. Disponível em: <http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm>. Acesso em: 26/05/2015.

Oficina da net, Diferenças entre compiladores e interpretadores. Disponível em: <https://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretadores>. Acesso em: 26/05/2015. 

Wikipedia, Compilador. Disponível em: <https://pt.wikipedia.org/wiki/Compilador>. Acesso em: 12/12/2015.

Wikipedia, Linguagem interpretada. Disponível em: <https://pt.wikipedia.org/wiki/Linguagem_interpretada>. Acesso em: 12/12/2015.