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).
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.
Existem 4 tipos básicos de sistemas operacionais:
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.
Fonte: http://tecnologia.hsw.uol.com.br/sistemas-operacionais3.htm
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.