Como corrigir erro no Edge, Calculadora e outros aplicativos do Windows 10
Como corrigir erro no Edge e outros aplicativos do Windows 10
Windows 10:
Menu iniciar e barra de tarefas não funcionam no Windows 10
1. Abra o PowerShell como administrador (use a lupa ou Windows + Q e pesquise por powershell);
2. Cole o seguinte comando e pressione ENTER (ele vai registrar todos os apps da loja que estejam instalados no seu pc);
Get-AppXPackage |
Foreach {Add-AppxPackage -DisableDevelopmentMode -Register
"$($_.InstallLocation)\AppXManifest.xml"}
3. Após concluído, reinicie o computador.
Se mesmo assim não
funcionar faça o procedimento 2.
Procedimento 2
Use a ferramenta DISM para
corrigir erros de corrupção do Windows.
Caso queira saber mais sobre a ferramenta DISM, recomendo que
acesse o material Oficial da Microsoft sobre está ferramenta:
https://support.microsoft.com/pt-br/kb/947821
Para executá-la, vamos seguir estes passos
1 - Iniciar o Prompt de comando em modo Administrador, utilize a tecla de atalho Windows + X
2 - Selecione o Prompt de comando (Admin)
3 - No Prompt de Comando Administrador Execute o comando:
DISM.exe /Online /Cleanup-image /Restorehealth
Para executá-la, vamos seguir estes passos
1 - Iniciar o Prompt de comando em modo Administrador, utilize a tecla de atalho Windows + X
2 - Selecione o Prompt de comando (Admin)
3 - No Prompt de Comando Administrador Execute o comando:
DISM.exe /Online /Cleanup-image /Restorehealth
Aguarde o processo de verificação ser concluído, reinicie o
computador e verifique se houve resultado, caso não tenha , siga para a próxima
etapa.
Se isso não der certo faça uma formatação para
evitar possíveis erros que virão.
Linguagem objective C histórico
Introdução
A linguagem Objective-C foi criada por Brad Cox e sua empresa, a StepStone Corporation, no início da década de 80. Em 88 ela foi licenciada pela NeXT, tornando-se a linguagem de desenvolvimento do NeXTstep. O suporte do GNU/gcc foi acrescentado em 1992. Em 1994 as empresas NeXT Computer e Sun Microsystems criaram uma especificação do NeXTstep conhecida como OpenStep. A implementação da Free Software Foundation da especificação OpenStep é denominada GNUStep.
Atualmente Objective-C é utilizada como a principal linguagem de programação do MacOS X, que é baseado no NeXTstep. A versão da Apple do ambiente NeXTStep/GNUStep com adições é denominada Cocoa.
Características
[Objc keep_it: simple];
Objective-C é apenas um conjunto de adições à linguagem C. Ela dá ao C suporte à construções orientadas a objetos como as da Smalltalk.
[Objc keep_it: elegant];
Objective-C suporta polimorfismo, posing, categorias, e é uma linguagem dinâmica, com typing e binding dinâmicos. Com Objective-C você pode adicionar classes e categorias em tempo de execução de forma fácil. E tudo isso com uma sintaxe de mensagem simples e elegante: olhe os títulos destas subseções e você já saberá como conversar com os objetos!
[Objc keep_it: fast];
Objective-C realiza chamadas de mensagem dinâmicas rapidamente, entre 1,5 e 2,0 vezes o tempo de uma chamada de função em C.
Programação Orientada à Objetos
O conceito de orientação à objetos é na verdade algo muito simples. Diariamente utilizamos objetos para realizar tarefas, e programar OO não é nada alem disso.
Programadores mais antigos estão acostumados a pensar a programação separando dados e funções que seriam aplicadas neles. A própria forma de pensar era diferente; para alguns problemas era óbvia a necessidade de uma integração maior entre os dados e as funções, e isto foi o aparecimento do objeto.
Tomando um exemplo simples: supomos que você possua uma televisão. A não ser que você seja um milionário ou um professor pardal, essa televisão deve ter saído de uma linha de montagem, sendo assim igual a muitos outros aparelhos do mesmo modelo. Entretanto essa é a sua televisão, e ela possui um número de identificação (ou número serial) único.
No exemplo acima e agora traduzindo para o conceito de OO, sua televisão é uma instância da classe televisão. E cada vez que uma nova televisão é produzida, uma nova instância da classe televisão é criada.
Existem também certas coisas que você pode fazer com a sua televisão, como ligar e desligar, modificar o volume e configurações de cor, ligar o PIP, etc. As funções realizadas com a televisão, em OO, denominam-se métodos. Em alguns casos os métodos são aplicados na instância da classe, em outros eles são aplicados na classe em si. Por exemplo, ligar a televisão seria um método de instância e descobrir quantos televisores foram produzidos por um determinado fabricante seria um método de classe.
Quando vamos comprar um televisor em alguma loja, costumamos encontrá-los agrupados junto com tocadores de DVD, por exemplo. Bem, isso não se dá por acaso: televisores, assim como tocadores de DVD são eletrônicos, e com isso possuem características e funções em comum. Podemos então pensar nestes dois aparelhos como sendo instâncias de uma classe denominada eletrônicos. Entretanto não queremos instâncias da classe eletrônicos, e sim das classes televisão e toca-DVD, logo dizemos que as classes televisão e toca-DVD são subclasses (ou classes filhas) da superclasse (ou classe pai) eletrônicos. Esse é um conceito muito importante em orientação à objetos, e é denominado herança: quando criamos uma subclasse ela herda as características e métodos de sua superclasse. Nesse caso podemos dizer que nunca iremos criar uma instância da classe eletrônicos, logo esta é denominada uma classe abstrata, ou seja, uma classe que serve apenas para ser superclasse de outras classes.
retirado de: http://www.devmedia.com.br/introducao-ao-objective-c/23061
Linguagem SQL histórico
A linguagem SQL surgiu em meados da década de 70, sendo resultado de um estudo de E. F. Codd, membro do laboratório de pesquisa da IBM em San Jose, Califórnia. Este estudo tinha foco em desenvolver uma linguagem que adapta-se ao modelo relacional. O primeiro sistema de BD baseado em SQL tornou-se comercial no final dos anos 70 juntamente com outros sistema de BD’s relacionais. O sucesso da linguagem foi tão grande que obrigou o ANSI (American National Standarts Institute), a padronizar as implementações da linguagem, assim, nos dias de hoje, a maior parte de BD’s seguem criteriosamente esta padronização, podendo ter algumas variações, mais mesmo assim não afetando na padronização global da linguagem tornando assim a portabilidade mais fácil, se seguida de forma adequada pelo DBA.
Em 1982, foi lançada a primeira versão padronizada da SQL, que vieram ganhando melhorias de acordo com sua evolução e tornando-se assim, a mais poderosa ferramenta para definição e manipulação de BD’s e hoje utilizada em grande parte dos BD existente, tais como MySQL, SQLServer, Firebird dentre outros.
Linguagem Java histórico
Java: história e principais conceitos
Veja neste artigo os principais conceitos relacionados à linguagem Java, desde sua criação até o processo de compilação de aplicativos desenvolvidos nessa linguagem.
A história começa em 1991, em San Hill Road empresa filiada a Sun (da qual hoje pertence a empresa Oracle), formado pelo time de engenheiros lliderados por Patrick Naugthon, Sun Fellow eJames Gosling.
O grupo estava iniciando um projeto denominado Projeto Green, que consistia na criação de tecnologias modernas de software para empresas eletrônicas de consumo. A ideia principal do Java era que os aparelhos eletrônicos se comunicassem entre si. Por exemplo, o caso de possuir um fogão, você poderia deixar assando sua comida e quando estivesse pronta iria enviar uma mensagem para o microondas ligar e após isso tocar o seu despertador, sendo algo do gênero.
Com o tempo perceberam que não poderiam ficar presos aos sistemas operacionais, até porque os clientes não estavam interessados no tipo de processador que estavam utilizando, e sim na tecnologia. Portanto para o grupo criar uma versão do projeto para cada tipo de sistema era inviável, sendo assim, foi desenvolvido o sistema operacional GreenOS.
A linguagem de programação chamada de Oak (carvalho) foi criada pelo chefe do projeto James Gosling. A explicação da origem do nome foi que enquanto pensava numa estrutura de diretórios para a linguagem, observava pela janela um carvalho. Mas esse nome já estava registrado, então o nome acabou surgindo na cafeteria local da cidade onde tomavam café. “Java”, pois era o nome da terra de origem do café, que os programadores da equipe apreciavam nessa cafeteria, por isso que a logo do Java é um café.
Em 1993, apareceu uma oportunidade para o grupo Green. A empresa FirstPerson junto com aTime-Warner estava pedindo propostas de sistemas operacionais de decodificadores e tecnologias de vídeo sob demanda. Foi na época em que o NCSA apresentou o MOSAIC 1.0, o primeiro navegador gráfico para Web. Então a empresa FirstPerson apostou nos testes da TV da Time-Warner, mas esta empresa acabou escolhendo a tecnologia oferecida pela Silicon Graphics.
Em 1995 a Sun viu uma oportunidade na Web, nessa época nas páginas não existia muita interatividade, apenas conteúdos estáticos eram exibidos. Então nesse ano a Sun anunciou o ambiente Java, sendo um absoluto sucesso, gerando uma aceitação aos browsers populares como o Netscape Navigator e padrões tridimensionais como o VRML (Virtual Reality Modeling Language - Linguagem de Modelagem para a Realidade Virtual).
O Java foi o primeiro a utilizar decodificares de televisões interagindo em dispositivos portáteis e outros produtos eletrônicos de consumo, foi do mesmo jeito que foi iniciado em 1991, possuindo portabilidade para qualquer ambiente e do desenvolvimento para múltiplas plataformas, em ambientes de eletrônicos de consumo, desde então o Java vem liderando o mercado em termos de linguagem.
Veja as principais características e vantagens da linguagem Java:
- Suporte à orientação a objetos;
- Portabilidade;
- Segurança;
- Linguagem Simples;
- Alta Performance;
- Dinamismo;
- Interpretada (o compilador pode executar os bytecodes do Java diretamente em qualquer máquina);
- Distribuído;
- Independente de plataforma;
- Tipada (detecta os tipos de variáveis quando declaradas);
Dentro das características, o principal item é o fator da “Independência de plataforma”. Hoje a maioria das linguagens sofrem na transferência de plataforma quando o sistema desenvolvido tem que migrar para outra plataforma, pois quando compilado um programa a ação do compilador é transformar o arquivo-fonte em código de máquina.
Por exemplo, se o programa desenvolvido for compilado em sistemas Macintosh, mais tarde terão problemas quando forem migrar para plataformas Intel, tendo que transferir o código fonte para a plataforma Intel e fazer a compilação novamente para produzir o código de máquina específico para este sistema. Muitas vezes o programador terá que alterar o código fonte antes de efetuar a compilação para a nova plataforma, esse motivo acontece por possuirem arquiteturas de processador diferenciadas.
![Processo da compilação de um programa desenvolvido por outras linguagens](http://videos.web-03.net/artigos/Thiago_Varallo/HistoriaJava/HistoriaDoJava1.jpg)
Figura 1: Processo da compilação de um programa desenvolvido por outras linguagens
Já os programas em Java possuem uma característica fundamental que permite desenvolver sem se preocuparar com o tipo de sistema ou plataforma que precisa ser desenvolvida e preparada.
A independência de plataforma já fala por si, pois possibilita o programa ser executado em diferentes plataformas e sistemas operacionais, através de um emulador conhecido como a Máquina Virtual Java ou JVM (Java Virtual Machine) que ajuda rodar os sistemas baseados em Java. Pode-se também se denominar como uma máquina virtual baseada em software que é executada dentro dos aparelhos eletrônicos onde irá ler e executar os bytecodes do Java.
Abaixo, na Figura 2, é mostrado como é realizado uma compilação de um programa desenvolvido em linguagem Java.
![Processo da compilação de um programa desenvolvido por Java](http://videos.web-03.net/artigos/Thiago_Varallo/HistoriaJava/HistoriaDoJava2.jpg)
Figura 2: Processo da compilação de um programa desenvolvido por Java
Portanto era isso, aqui foram apresentados alguns dos principais pontos relacionados à linguagem Java desde sua criação.
retirado de :http://www.devmedia.com.br/java-historia-e-principais-conceitos/25178
Linguagem C# histórico (histórico breve e direto)
1. Introdução
A linguagem C# (lê-se “cêsharp”) foi criada juntamente com a arquitetura da plataforma .NET da Microsoft. Construída do zero, sem se preocupar com compatibilidade de código legado, e a maioria das classes do framework .NET foram escritas com essa linguagem. Vários desenvolvedores participaram do projeto de criação da linguagem, mas o principal envolvido no projeto foi o engenheiro Anders Hejlsberg, que além do C# foi criador do Turbo Pascal e do Delphi.O nome C# fez com que muitas pessoas pensassem que a cerquilha (#) seria uma sobreposição de quatro símbolos de adição, dando assim a entender que poderia ser um C++++, mas na verdade o símbolo # se refere ao sinal musical de sustenido (#), que indica meio tom acima de uma determinada nota musical. Possui uma sintaxe expressiva, elegante e é totalmente orientada a objetos.
2. Características
A linguagem C# foi influenciada por várias linguagens, como por exemplo, JAVA e C++. Na verdade, ela é uma junção das principais vantagens dentre essas linguagens, melhorando suas implementações e adicionando novos recursos, fazendo a linguagem atrativa para desenvolvedores que queiram migrar para o Microsoft .NET.Sua sintaxe é simples e de fácil aprendizagem, muito familiar com a sintaxe de JAVA e C. Além disso, simplifica muitas complexidades do C++, fornecendo recursos poderosos, como tipos de valor nulo, enumerações, delegações, expressões lambdas e acesso direto a memória, suporte a métodos e tipos genéricos, gerando uma melhor segurança de tipo e desempenho.
Como C# é uma linguagem orientada a objetos, ela suporta conceitos como encapsulamento, herança e polimorfismo. Todas suas variáveis e métodos são encapsulados dentro das definições de uma classe. Ela é usada na maioria das classes do .NET framework. Foi a primeira linguagem orientada a componentes da família C/C++, segue os padrões POO, onde tudo deriva de um ancestral comum, no caso de C# é System.Object.
É fortemente tipada, possui suporte a DLL's, COM e COM+, é case-sensitive e suas classes podem implementar várias interfaces, mas a herança por extensão é simples. Seus programas executam sobre um ambiente gerenciável, ficando a cargo do .NET framework realizar o controle de memória. Possui a Language Integrated Query (LINQ), que fornece recursos de consulta interna entre uma variedade de fontes de dados.
Métodos e tipos não precisam ser declarados em ordem, um arquivo C# pode conter inúmeras classes, estruturas e interfaces. As inovações do C# permitem escrita de aplicativos de maneira rápida, mantendo a expressividade e elegância das linguagens C-Style. Permite aos seus desenvolvedores criarem uma infinidade de aplicativos compatíveis com o .NET framework, como por exemplo aplicações tradicionais do Windows, web services, componentes distribuídos, aplicativos cliente-servidor e aplicativos com integração de banco de dados, entre outros tipos.
3. Novidades da versão 5.0
As maiores novidades da versão 5.0 da linguagem ficam por conta do uso de AsyncFeaturee Caller Info. O AsyncFeature introduz duas novas palavras chaves :async e await. O uso de chamadas assíncronas já era possível anteriormente, mas foi simplificado dentro da nova versão. O recurso de chamadas para métodos assíncronos pode ser muito utilizado em aplicativos que queiram ser mais atrativos e não queiram bloquear o usuário enquanto um processo está sendo executado. Por exemplo, ao executar uma determinada ação como um envio de e-mails para clientes cadastrados, o usuário não deseja esperar que todos os e-mails sejam enviados para ele poder continuar usando o sistema. Esse envio deve ser feito em segundo plano, não bloqueando a interação do usuário com o sistema enquanto os e-mails são enviados.Geralmente um método que é modificado para ser assíncrono contém ao menos um modificador await correspondente. O método irá funcionar de maneira síncrona até o primeiro await ser encontrado, nessa altura ele é suspenso até a tarefa estar completa, enquanto isso, a execução é retornada ao chamador do método. Se o método não tiver um método await correspondente ele é executado de forma síncrona. Um aviso é emitido pelo compilador alertando sobre qualquer método assíncrono que não contenha um await correspondente.
Os retornos de métodos assíncronos podem ser do tipo Task, Task<TResult> ou void. O tipo Task<TResult> é usado como retorno quando o método tem um tipo a ser retornado. Por exemplo, se o método irá retornar um tipo int e necessita ser assíncrono, o retorno do método será Task<int>, se for retornado um String o retorno será Task<String>. Já o uso de Task é para situações onde nenhum valor significativo é retornado quando o método termina de executar todas as suas instruções, ou seja, a chamada do método retorna um Task, mas quando Task está finalizada qualquer await que estiver aguardando o retorno do método irá igualá-lo a void.
O tipo void é usado principalmente para definir manipuladores de eventos, onde um void é necessário. O chamador de um método assíncrono com retorno void, não pode capturar exceções que o método por ventura venha a lançar.
Outra novidade é o CallerInformation, que pode ajudar na depuração e criação de ferramentas para diagnóstico, ajudando a evitar código duplicado em invocação de métodos, como também em logs. Foi criado especificamente para decorar parâmetros opcionais de um método, que podem então serem usados em tempo de execução pelo .NET, para injetar informações ao chamador. Algumas das vantagens do uso do Caller Info são :
- O chamador não precisa fazer nada explicitamente, se é preciso criar um componente que irá ser usado em uma aplicação cliente, não é necessário se preocupar com o chamador passando informações explicitamente, ele sempre irá capturar isso pelo Caller Info.
- Não é necessário usar explicitamente System.Reflection.
- Esses atributos serão muito úteis para a implementação do servidor.
- CallerFilePath, que proverá o caminho para o arquivo a partir de onde o método é chamado;
- CallerLineNumber, irá prover o número da linha de onde a chamada é feita;
- CallerMemberName, que irá prover o nome do método que está fazendo a chamada.
3.1 Utilizando Caller Info
Na Listagem 1 é mostrado o exemplo de código com as chamadas aos Caller Info para mostrar uma informação mais detalhada no log do projeto.Listagem 1: Exemplo de código com uso de Caller Info
class Program { static void diga_mensagem(string msg, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { Console.WriteLine("Sua mensagem foi > " + msg); Trace.WriteLine("memberName : " + memberName); Trace.WriteLine("sourceFilePath : " + sourceFilePath); Trace.WriteLine("sourceLineNumber : " + sourceLineNumber); Console.ReadKey(); } static void Main(string[] args) { Console.WriteLine("Diga sua mensagem : "); string msg = Console.ReadLine(); diga_mensagem(msg); } }
![Execução da aplicação](http://arquivo.devmedia.com.br/artigos/EvertonFoz/C_Sharp/C_Sharp_1.jpg)
Figura 1: Execução da aplicação
Na Figura 2 são exibidas as informações que foram capturadas pelos Caller Info que foram passados como argumentos na chamada do método.
![Resultado do uso de Caller Info](http://arquivo.devmedia.com.br/artigos/EvertonFoz/C_Sharp/C_Sharp_2.jpg)
Figura 2: Resultado do uso de Caller Info
4. Conclusão
A linguagem C# é uma linguagem que visa facilitar muito o desenvolvimento, e possui uma vasta gama de recursos que podem proporcionar uma grande produtividade para desenvolvedores que a utilizam. Além dos recursos como sua sintaxe e programação orientada a objetos, que fazem dela uma linguagem poderosa para se trabalhar. Aliada ao uso do framework .NET, é possível criar diversos tipos de aplicações,e ainda ter um ambiente onde o desenvolvedor pode focar na sua lógica o tempo todo, sem se preocupar com a gerência de recursos, já que que o próprio framework se encarrega de cuidar disso.Retirado de: http://www.devmedia.com.br/introducao-a-linguagem-c/27711
histórico do php
História do PHP
PHP Tools, FI, Kit
de Construção, e PHP/FI
O PHP como é conhecido hoje, é na
verdade o sucessor para um produto chamado PHP/FI. Criado em 1994 por Rasmus
Lerdof, a primeira encarnação do PHP foi um simples conjunto de binários Common
Gateway Interface (CGI) escrito em linguagem de programação C. Originalmente
usado para acompanhamento de visitas para seu currículo online, ele nomeou o
conjunto de scripts de "Personal Home Page Tools" mais frequentemente
referenciado como "PHP Tools." Ao longo do tempo, mais
funcionalidades foram desejadas, e Rasmus reescreveu o PHP Tools, produzindo
uma maior e rica implementação. Este novo modelo foi capaz de interações com
Banco de Dados e mais, fornecendo uma estrutura no qual os usuários poderiam
desenvolver simples e dinâmicas aplicações web, como um livros de visitas. Em
Junho de 1995, Rasmus » liberou o código fonte do PHP
Tools para o público, o que permitiu que desenvolvedores usassem da forma como
desejassem. Isso permitiu - e encorajou - usuários a fornecerem correções para
bugs no código, e em geral, aperfeiçoá-lo.
Em Setembro do mesmo ano, Rasmus
expandiu o PHP e - por um breve período - mudou o nome PHP. Agora referindo-se
a ferramenta como FI, abreviação para "Forms Interpreter", a nova
implementação incluiu algumas funcionalidades básicas do PHP como bem
conhecemos hoje. Tinha variáveis no estilo Perl, interpretação automática de
variáveis de formulários, e sintaxe HTML embutida. A sintaxe em si era muito
similar com a do Perl, porém muito mais limitada, simples, e um pouco
inconsistente. De fato, para embutir o código em um arquivo HTML,
desenvolvedores tinham que usar comentários HTML. Embora este método não sido
inteiramente bem-recebido, FI continuou a desfrutar um crescimento e aceitação
como uma ferramente CGI --- mas ainda não como uma linguagem. Contudo, isso
começou a mudar no mês seguinte; em Outubro, 1995 Rasmus liberou um completa
reescrita do código. Trazendo de volta o nome PHP, estava agora (brevemente)
nomeado "Personal Home Page Contruction Kit" e foi o primeiro
lançamento a vangloriar-se que era, na época, considerado um avançado script de
interface. A linguagem foi desenvolvida para, deliberadamente, ser parecida com
C, tornando-a fácil para ser adotada por desenvolvedores habituados com C, Perl
e linguagens similares. Tendo sido até este momento exclusiva para sistemas
UNIX e sistemas compatíveis com POSIX, o potencial para uma implementação em um
Windows NT começava a ser explorada.
O código tem outra reforma completa,
e em Abril de 1996, combinando os nomes dos últimos lançamentos, Rasmus
introduziu o PHP/FI. Esta segunda geração da implementação começou a realmente
evoluir o PHP de um conjunto de ferramentas para sua própria linguagem de
programação. Ele incluía suporte embutido dos banco de dados DBM, mSQL, e
Postgres95, cookies, funções de apoio definidas pelo usuário, e muito mais. Em
Junho, PHP/FI ganhou o status de versão 2.0. Um interessante fato sobre isso,
porém, é que existia apenas um única completa versão do PHP 2.0. Quando
finalmente se tornou um status beta em Novembro, 1997, o mecanismo de análise
suvbjacente já estava interiramente reescrito.
Apesar de ter tido um curto período
de desenvolvimento, ele continuava defrutar uma crescente popularidade em um
ainda jovem mundo web desenvolvimento, Em 1997 e 1998, PHP/FI teve o apoio de
milhares de usuários ao redor do mundo. Uma pesquisa Netcraft de Maio de 1998,
indicou que cerca de 60.000 domínios relataram ter cabeçalhos contendo
"PHP", indicando que o servidor de hospedagem de fato tinha o PHP
instalado. Este número pode ser equiparado com aproximadamente 1% de todos os
domínios da Internet da época. Apesar destes números impressionantes, o
amadurecimento do PHP/FI foi condenado a limitações; enquanto haviam vários
contribuintes menores, ainda era desenvolvido principalmente por uma única
pessoa.
Exemplo #1 Exemplo de código PHP/FI
<!--include /text/header.html-->
<!--getenv HTTP_USER_AGENT-->
<!--ifsubstr $exec_result Mozilla-->
Hey, you are using
Netscape!<p>
<!--endif-->
<!--sql database select * from table where user='$username'-->
<!--ifless $numentries 1-->
Sorry, that record does not
exist<p>
<!--endif exit-->
Welcome
<!--$user-->!<p>
You have <!--$index:0-->
credits left in your account.<p>
<!--include /text/footer.html-->
PHP 3
PHP 3.0 foi a primeira versão que se
assemelha com o PHP como existe hoje. PHP/FI se encontrava ainda ineficiente e
não tinha recursos que precisava para prover uma aplicação eCommerce que
estavam desenvolvendo para um projeto da Universidade, Andi Gutmans e Zeev
Suraski de Tel Aviv, Israel, começaram outra completa reescrita do
interpretador em 1997. Abordando Rasmus online, eles discutiram vários aspectos
para a corrente implementação e redesenvolvimento do PHP. Em um esforço para
melhorar a engine e iniciar a construção em cima da base de usuários existentes
do PHP/FI, Andi, Rasmus, e Zeev decidiram colaborar no desenvolvimento de uma
nova e independente linguagem de programação. Essa nova linguagem foi lançada
com um novo nome, que removeu a impressão do limitado uso pessoal que o nome
PHP/FI 2.0 tinha mantido. Foi renomeado simplesmente para 'PHP', com o
significado se tornando um acrônimo recursivo - PHP: Hypertext Preprocessor.
Um dos maiores pontos fortes do PHP
3.0 foram os fortes recursos de extensibilidade. Além de fornecer a usuários
finais uma interface robusta para múltiplos banco de dados, protocolos, e APIs,
a facilidade de estender a sua própria linguagem atraiu dezenas de
desenvolvedores que submeteram uma variedade de módulos. Indiscutivelmente esta
foi a chave para o PHP 3.0 ter sido um tremendo sucesso. Outro recurso chave
foi introduzido no PHP 3.0 incluindo o suporte a programação orientada a objeto
e a uma mais poderosa e consistente sintaxe de linguagem.
Em junho de 1998, com muitos novos
desenvolvedores ao redor do mundo unindo esforços, PHP 3.0 foi anunciado pelo
novo time de desenvolvimento do PHP como o sucessor oficial para o PHP/FI 2.0.
As melhorias no PHP/FI 2.0, cessaram em Novembro do ano anterior e agora foi
oficialmente finalizado. Depois de nove meses de testes abertos ao público,
quando o anúncio do lançamento oficial do PHP 3.0 chegou, prontamente foi
instalado em 70.000 domínios em todo mundo, e já não era mais limitado ao
sistemas operacionais compatíveis ao POSIX. Uma parcela relativamente pequena
de domínios informaram que o PHP foi instalado em um host com servidores
executando Windows 95, 98 e NT, Macintosh. E em seu pico, PHP 3.0 foi instalado
em aproximadamente 10% dos servidores web da internet.
PHP 4
No inverno de 1998, logo após o PHP
3.0 ter sido oficialmente lançado, Andi Gutmans e Zeev Suraski começaram a
trabalhar em uma reescrita do core do PHP. Os objetivos do projeto eram
melhorar performance das aplicações complexas, e melhorar a modularização do
código base do PHP. Tais aplicações só foram possíveis pelos novos recursos e
suporte para uma ampla variedades de banco de dados de terceiros e APIs do PHP
3.0, mas o PHP 3.0 não foi projetado para trabalhar com aplicações complexas de
forma eficiente.
O novo motor, chamado 'Zend Engine'
(composto pelos primeiros nome, Zeev e Andi), alcançou os objetivos do projeto
com sucesso, e foi introduzido em meados de 1999. O PHP 4.0 baseado neste
motor, e uma variedade de novos recursos adicionais, foi oficialmente lançado
em Maio de 2000, quase dois anos após seu antecessor. Além da altíssima
melhoria da performance nesta versão, o PHP 4.0 incluiu outros recursos chaves,
tais como suporte para maioria dos servidores web, sessões HTTP, saídas de
buffering, mais maneiras seguras para manipular dados de entrada de usuários e
diversas novas construções de linguagem.
PHP 5
O PHP 5 foi lançado em Julho de 2004
após um longo desenvolvimento e vários pré-lançamentos. Principalmente
impulsionado pelo seu core o Zend Engine 2.0 com um novo
modelo de objeto e dezenas de outros novos recursos.
O time de desenvolvimento PHP inclui
dezenas de desenvolvedores, também dezenas de outros trabalhando em algo
relacionado ao PHP e apoio a projetos como PEAR, PECL, documentação,
infra-estrutura de rede subjacente de bem mais de uma centena de servidores web
em seis dos sete continentes do mundo. Embora seja apenas uma estimativa
baseada sobre estatísticas de anos anteriores, é seguro presumir que o PHP está
agora instalado em dezenas, ou mesmo talvez centenas, de milhões de domínios em
todo mundo.
retirado de: http://php.net/manual/pt_BR/history.php.php
Histórico da linguagem C++
História
O C++ foi
inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs durante a década
de 1980 com o objectivo de melhorar a linguagem de programação C ainda que
mantendo máxima compatibilidade. Stroustrup percebeu que a linguagem Simula
possuía características bastante úteis para o desenvolvimento de software, mas
era muito lenta para uso prático. Por outro lado, a linguagem BCPL era rápida,
mas possuía demasiado baixo nível, dificultando sua utilização em
desenvolvimento de aplicações. Durante seu período na Bell Labs, ele enfrentou
o problema de analisar o kernel UNIX com respeito à computação distribuída. A
partir de sua experiência de doutorado, começou a acrescentar elementos do
Simula no C. O C foi escolhido como base de desenvolvimento da nova linguagem
pois possuía uma proposta de uso genérico, era rápido e também portável para
diversas plataformas. Algumas outras linguagens que também serviram de
inspiração para o cientista da computação foram ALGOL 68, Ada, CLU e ML.
Ainda em 1983 o nome da linguagem foi
alterado de C with Classes para C++. Novas características foram adicionadas,
como funções virtuais, sobrecarga de operadores e funções, referências,
constantes, gerenciamento manual de memória, melhorias na verificação de tipo
de dado e estilo de comentário de código de uma linha (//). Em 1985 foi lançada
a primeira edição do livro The C++ Programming Language, contendo referências
para a utilização da linguagem, já que ainda não era uma norma oficial. A
primeira versão comercial foi lançada em outubro do mesmo ano. Em 1989 a
segunda versão foi lançada, contendo novas características como herança
múltipla, classes abstratas, métodos estáticos, métodos constantes e membros
protegidos, incrementando o suporte a orientação a objeto. Em 1990 foi lançado
o livro The Annotated C++ Reference Manual, que tornou-se base para o futuro
padrão. Outras adições na linguagem incluem templates, tratamento de exceções,
espaço de nomes, conversão segura de tipo de dado e o tipo booleano.
Assim como a linguagem, sua
biblioteca padrão também sofreu melhorias ao longo do tempo. Sua primeira
adição foi a biblioteca de E/S, e posteriormente a Standard Template Library
(STL); ambas tornaram-se algumas das principais funcionalidades que
distanciaram a linguagem em relação a C. Criada primordialmente na HP por
Alexander Stepanov no início da década de 1990 para explorar os potenciais da
programação genérica, a STL foi apresentada a um comitê unificado ANSI e ISO em
1993 à convite de Andrew Koenig. Após uma proposta formal na reunião do ano
seguinte, a biblioteca recebe o aval do comitê.
Depois de anos de trabalho, o mesmo comitê ANSI/ISO padronizou o C++ em 1998 (ISO/IEC 14882:1998). Após alguns anos foram reportados defeitos e imprecisões no documento, e uma correção foi lançada em 2003.
Depois de anos de trabalho, o mesmo comitê ANSI/ISO padronizou o C++ em 1998 (ISO/IEC 14882:1998). Após alguns anos foram reportados defeitos e imprecisões no documento, e uma correção foi lançada em 2003.
Por muito tempo, o C++ foi encarado
como um superconjunto do C (uma discussão sobre o tema encontra-se abaixo na
seção de incompatibilidades). Entretanto, em 1999 o novo padrão ISO para a
linguagem C tornou as duas linguagens ainda mais diferentes entre si. Devido a
essas incompatibilidades, muitas empresas que desenvolvem compiladores não
oferecem suporte à versão mais recente da linguagem C.
Pode-se dizer que C++ foi a única linguagem entre tantas outras que obteve sucesso como uma sucessora à linguagem C, inclusive servindo de inspiração para outras linguagens como Java, a IDL de CORBA e C#.
Pode-se dizer que C++ foi a única linguagem entre tantas outras que obteve sucesso como uma sucessora à linguagem C, inclusive servindo de inspiração para outras linguagens como Java, a IDL de CORBA e C#.
O nome C++
Durante sua fase inicial de
desenvolvimento, a linguagem era chamada "novo C" ou ainda "C
com classes". O termo "C++" é creditado a Rick Mascitti[6], e
foi utilizado pela primeira vez em dezembro de 1983. Ele é uma referência ao
operador de incremento ++, significando um acréscimo (uma evolução) à linguagem
C. Em tom humorado, desenvolvedores software e especialistas em informática no
início da década de 1990 costumavam relacionar o ++ do nome à grande
insistência dos programadores em utilizar o C++ da mesma forma que a linguagem
C, não usufruindo das novas facilidades que a linguagem poderia fornecer. Assim
como o ++ estava sendo aplicado de maneira pós-fixa à letra C, a linguagem C++
era uma evolução do C pós-fixada, que só tornar-se-ia realidade em algum futuro
remoto, não naquele momento.
Vantagens e
Desvantagens
Vantagens
- Produção
de código o quanto mais eficiente possível.
- Possibilidade
em programação de alto e baixo nível.
- Alta
flexibilidade, portabilidade e consistência.
- Adequado
para grandes projetos.
- Ampla
disponibilidade e suporte, devido principalmente à grande base de
desenvolvedores.
- Não
está sob o domínio de uma empresa (em contraste do Java — Sun ou Visual
Basic — Microsoft).
- Padronização
pela ISO.
- Grandes
possibilidades para a meta programação e programação genérica.
- Compatibilidade
com C, resultando em vasta base de códigos.
Desvantagens
- Compatibilidade
com o C herdou os problemas de entendimento de sintaxe do mesmo.
- Os
compiladores atuais nem sempre produzem o código mais otimizado, tanto em
velocidade quando tamanho do código.
- Grande
período para o aprendizado.
- A
biblioteca padrão não cobre áreas importantes da programação, como
threads, conexões TCP/IP, interface gráfica e manipulação de sistemas de
arquivos, o que implica na necessidade de criação de bibliotecas próprias
para tal, que pecam em portabilidade.
- Devido
à grande flexibilidade no desenvolvimento, é recomendado o uso de padrões
de programação mais amplamente que em outras linguagens.
Pessoas Notáveis
O desenvolvimento da linguagem C++ é
fruto do trabalho de milhares de pessoas associadas à academia e à indústria de
software, e pode consistir na utilização da linguagem, em seu ensino, na
construção de bibliotecas de rotinas ou na participação no comitê de
padronização, entre outras atividades. Algumas pessoas tiveram participação
fundamental durante a história para o desenvolvimento[26]. Primeiramente, o
próprio Bjarne Stroustrup, criador da linguagem e de seu primeiro compilador. O
cientista ainda participa na padronização e divulga o C++ no meio acadêmico.
Andrew Koenig é outro pesquisador notável, bastante atuante na padronização e
creditado pela técnica Koenig lookup, demonstrada acima. Já Scott Meyers é um
doutor em ciência da computação, e escritor de diversos livros sobre o
desenvolvimento de software utilizando a linguagem. Assim como Meyers, Herb
Sutter é escritor de diversos livros sobre C++ e centenas de colunas e artigos,
e um notável pesquisador sobre programação concorrente e multitarefa. Andrei
Alexandrescu é considerado um dos maiores especialistas em programação C++
avançada. Na área de programação genérica destaca-se o programador russo
Alexander Stepanov, a figura chave na criação da Standard Template Library.
Retirado de: http://www.tiexpert.net/programacao/c/introducao-cpp.php
Histórico da Linguagem C (resumido)
Histórico da Linguagem C
Ao ponto de vista técnico, o surgimento do C iniciou com a linguagem ALGOL 60, definida em 1960. ALGOL era uma linguagem de alto nível, que permitia ao programador trabalhar "longe da máquina", sem se preocupar com os aspectos de como cada comando ou dado era armazenado ou processado. Foi criado para substituir o FORTRAN. ALGOL não teve sucesso, talvez por tentar ser de muito alto nível em uma época em que a maioria dos sistemas operacionais exigiam do usuário um grande conhecimento de hardware.
Em 1967 surgiu CPL (Combined Programming Language) nas universidades de Londres e Cambridge com o objetivo, segundo a equipe do projeto, de "trazer ALGOL à terra", ou "manter contato com a realidade de um computador real". Da mesma forma de ALGOL, CPL não foi bem aceita, em especial pelos projetistas de sistemas operacionais que a consideravam difícil de implementar.
Ainda em 1967, em Cambridge, Martin Richards criou o BCPL (Basic CPL), uma simplificação do CPL, tentando manter apenas as "boas coisas do CPL".
Em 1970, Ken Thompson, chefe da equipe que projetou o UNIX para o PDP11 do Bell Labs, implementou um compilador para uma versão mais reduzida do CPL. Batizou a linguagem de B.
Tanto BCPL quanto B mostravam-se muito limitadas, prestando-se apenas para certas classes de problemas. Isto se fez sentir especialmente na primeira versão do PDP11, lançado no mercado em 1971. Um dos fatores que levou à isto foi a intenção do grupo responsável pelo UNIX de reescrevê-lo todo em uma linguagem de alto nível, e para isto B era considerado lenta.
Estes problemas levaram a que o projetista Dennis Ritchie, do Bell Labs, fosse encarregado de projetar uma nova linguagem, sucessora do B, que viria então, a ser chamada de C.
A linguagem C buscou manter o "contato com o computador real" e ainda sim dar ao programador novas condições para o desenvolvimento de programas em áreas diversas, como comercial, científica e de engenharia.
Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padrão da linguagem C foi aquela fornecida com o UNIX versão 5.0 do Bell Labs. A principal documentação deste padrão encontra-se na publicação "The C Programming Language", de Brian Kernighan e Dennis Ritchie (K&R), tida como a "bíblia da linguagem C".
O mais interessante desta versão de C era que os programas-fonte criados para rodar em um tipo de computador podiam ser transportados e recompilados em outros sem grandes problemas. A esta característica dá-se o nome de portabilidade. Com ela, uma empresa que desenvolve um programa pode fazê-lo rodar em diferentes computadores sem ter um elevado custo a cada vez que isto for feito.
Em 1985, ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado "C ANSI".
Retirado de : http://www.inf.pucrs.br/~pinho/LaproI/Historico/Historico.htm
histórico da liguagem PYTHON
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL
- Very High Level Language), de sintaxe moderna, orientada a objetos,
interpretada via bytecode, com tipagem forte (não há conversões
automáticas) e dinâmica (não há declaração de variáveis e elas podem conter
diferentes objetos), modular, multiplataforma, de fácil aprendizado e de
implementação livre. Python foi criada por GuidoVanRossum.
Como se pronuncia
Python?
Deve-se dizer "Páifon",lembrando que
"th" pronuncia-se colocando a língua entre os dentes e emitindo um
som de "f". "Páiton" também é uma pronuncia aceitável.
De onde surgiu esse
nome?
Ao contrário do que normalmente se pensa, a origem
do nome da linguagem não é a espécie de serpente "Pitón" e sim o
grupo inglês de humoristas "Monty Python". O uso da serpente como
símbolo da linguagem se difundiu depois da publicação doProgrammingPython da
editora O'Reilly.
Em que tipo de
aplicações eu usaria Python?
Python é uma linguagem de uso geral que pode ser
empregada em vários tipos de problemas. A biblioteca padrão inclui módulos para
processamento de texto e expressões regulares, protocolos de rede (HTTP, FTP,
SMTP, POP, XML-RPC, IMAP), acesso aos serviços do sistema operacional,
criptografia, interface gráfica etc. Além da biblioteca padrão, existe uma
grande variade de extensões adicionais para todo tipo de aplicação.
Python é tipicamente usado em aplicações web e como
linguagem de scripting para administração de sistemas. A
facilidade de integração com C faz de Python uma linguagem embutida atrativa em
aplicações de maior porte. A possibilidade de uso de componentes COM faz de
Python uma alternativa mais agradável (e barata) ao Visual Basic. Finalmente,
com o uso de ferramentas como o freeze ou Py2Exe é
possível distribuir aplicações Python stand-alone, sem que o
usuário tenha que instalar o interpretador Python separadamente.
Praticamente tudo o que se faria com qualquer
linguagem de programação, seja ela interpretada ou compilada pode-se se fazer
com python: protótipos de sistemas, automatizar tarefas repetitivas como
manipulação de texto, cópia de arquivos e outros. Pode-se também criar
programas que funcionam no modo texto, tanto interativos como servidores (ou
daemons). Pode-se fazer programas em modo gráfico usando a interface nativa do
seu sistema, ou então utilizando Tk, GTk, Qt, wxWidgets e tantas outras.
Em que tipo de
aplicações eu não usaria Python?
Em teoria pode-se fazer qualquer coisa com a
linguagem (é Turing completa ;), mas na prática, devido à recursos de CPU,
implementação e uso de memória isso nem sempre é possível. Aplicações que
exigem manipulações de baixo-nível são mais complicadas de se fazer (por
exemplo, troca de contexto em um Sistema Operacional), rotinas relacionadas a
controladores de dispositivos que exigem respostas muito rápidas são pouco
adequados também de se fazer em Python, para isso é melhor utilizar uma
linguagem compilada como C/C++ ou então reescrever partes críticas como módulos
em C de um programa principal em Python.
O Python também não é muito bom quando se trata de
threads. Se sua aplicação precisa de ter muitos deles ou precisa de certas
funções como prioridades entre eles, provavelmente você não poderá contar com o
Python em seu estado atual. Deve ser lembrado, porém, que existe suporte a
threads e em muitos casos ele é suficiente (por exemplo, para delegar a um
thread a GUI e a outro o trabalho duro).
Qual a licença
usada e quais as restrições de uso?
Python é distribuída sob uma licença própria
(compatível com a GPL), que impõe poucas restrições. É permitida a
distribuição, comercial ou não, tanto da linguagem quanto de aplicações
desenvolvidas nela, em formato binário ou código fonte, bastando cumprir a
exigência de manter o aviso de Copyright da PSF (Python
Software Foundation). Veja a licença em mais detalhes aqui: Licença
do Python 2.x ou Licença
do Python 3.x.
Como achar uma boa
lista de sites de hospedagem gratuitos que suportam Python (e ZOPE) ?
Você pode encontrar uma lista em http://www.oinko.net/freepython/
Por que aprender
Python?
Porque Python é uma linguagem simples e elegante.
Porque Python é fácil de aprender. Porque Python pode ser usado para resolver
uma grande variedade de problemas. Porque Python incentiva você a escrever seus
programas da maneira correta, sem que isso se torne um empecilho à
produtividade.
Python tem uma curva de aprendizado bastante
interessante, permitindo que novos programadores, mesmo os que nunca tenham
programado antes, sejam imediatamente produtivos escrevendo scripts
procedurais. O programador pode executar o interpretador como um shell,
vendo imediatamente o resultado da saída de cada comando e explorando os
recursos da linguagem interativamente.
Para construir aplicações mais complexas, Python
possibilita a fácil migração para a programação orientada a objetos. Um
programa pode evoluir naturalmente para esse paradigma à medida que se torna
mais complexo. A facilidade inicial do Python não barateia a linguagem, como é
comum em linguagens que têm por objetivo expresso serem fáceis de aprender.
Python é simples de aprender porque é uma linguagem bem planejada.
Ocultando o Código
Muitas pessoas querem saber como transformar o
código python em binário, ocultando-o de leitores indesejáveis. Apesar de não existir
um jeito perfeito de fazer isso em nenhuma linguagem, devido aos disassemblers,
a página OcultandoCodigoPythonfornece algumas informações.
Divulgando Python
Todos que trabalham com Python já devem estar
acostumados com as mesmas perguntas sempre, começando com "Python? O que é
isto?", acompanhadas de um nariz meio torto e uma testa franzida. Nossa
intenção é criar uma lista de Perguntas Freqüentes, com o objetivo de mostrar
que Python é uma linguagem que pode ser utilizada no ensino de lógica e
programação em cursos de graduação. Apesar deste objetivo, acreditamos que as
respostas podem ser úteis a todos os interessados em conhecer um pouco mais
sobre Python. Esta seção de perguntas e respostas foi compilada pelo MarcoAndréLopesMendes a partir de respostas
de diversos participantes da lista de discussão python-brasil
no Google Groups.
Por que eu deveria
usar Python e não <insira aqui a sua linguagem favorita>?
Python e Perl são
linguagens com propósitos bastante parecidos entretanto Python promove a
facilidade de leitura em contraste ao modo "somente de escrita" que
muitos programadores adotam em Perl. Um outro lema oposto ao Perl é que existe
somente um jeito de se fazer uma coisa, em vez de se utilizar diversos dielatos
que Perl permite.
Python e Java são
linguagens bastante diferentes, o que torna a comparação direta difícil.
Enquanto Python sugere um desenvolvimento rápido, do tipo
"editar-executar" (Python compila automaticamente quando executamos o
programa), Java exige que o programador declare tipos, visibilidade de funções,
separe cada classe (pública) em arquivos diferentes, e o desenvolvimento é do
tipo "editar-compilar-executar" (ainda que o arquivo gerado tenha que
ser interpretado...). Outra vantagem do Python são suas estruturas nativas de dados,
tais como listas e dicionários. Java usa classes de sua biblioteca padrão para
as mesmas funcionalidades, com algumas complicações (leia-se casts)
adicionais.
Python e C. C é de médio
nível e assim como o assembly, expõe conceitos estruturais da arquitetura
da máquina e complica a implementação de conceitos modernos com Orientação a
Objetos.
Python e Pascal. Pascal é
"linguagem de brinquedo" (não estou falando de Object Pascal), nos
anos 80 era uma ótima linguagem para iniciar a programar mas hoje este papel
pode ser cumprido com vantagens por Python.
Python e PHP. PHP é uma
linguagem de programação especialmente direcionada para a programação de
websites dinâmicos. Até existe o projeto PHP-GTK, ou seja, tornar o PHP também
uma linguagem de programação com suporte à objetos gráficos, porém é
complicado, trabalhoso e problemático. O Python é uma linguagem sem objetivo
principal: pode ser tanto utilizada em programas modo texto, quanto suporte a
objetos gráficos e páginas dinâmicas. Aprendendo Python, você terá a capacidade
de montar programas para diversas plataformas e objetivos sem nem mesmo
prescisar trocar de linguagem.
Python e Visual Basic/Delphi. Em termos de
Win32, o Python não perde em nada para VB/Delphi pois oferece o acesso completo
ao MFC e outras bibliotecas gráficas mais produtivas. Em contrapartida, oferece
uma linguagem Orientada a Objetos DE VERDADE enquanto que essas outras duas
apenas implementam parte dos conceitos da OOP. Outras vantagens importantes são
o custo/benefício e o fato de ser multi-plataforma. Em termos de .Net, o IronPython oferece
bom suporte, com a vantagem de suportar também o Mono. (MarinhoBrandão)
Uma linguagem
interpretada não é lenta?
Sim e não. Uma linguagem interpretada em geral é
mais lenta que uma linguagem compilada. Se a linguagem estará sendo utilizada
por estudantes em iniciação, então os programadores deveriam ter uma
preocupação maior com a corretude e a facilidade de programação do que com o
desempenho do código, desenvolvendo programas simples, mais fáceis de entender,
onde a velocidade não é a maior das considerações.
Além do mais, é possível fazer código otimizado
muito mais rápido em Python do que em C, por exemplo. Além disso, atualmente
estão se desenvolvendo tecnologias de compilação JIT (just in time) que
reduzem drasticamente a diferença entre aplicações desenvolvidas em linguagens
compiladas e linguagens interpretadas.
Para ver uma prova disto, basta uma visita rápida
a: BenchmarkAdHoc
Se o programa a ser implementado for algum tipo de
programa mastigador de grandes volumes de dados ou um sistema de tempo real
para controle de hardware, talvez a lentidão seja perceptível. A maioria dos
problemas não requer tanto processamento assim, computadores pessoais têm poder
de CPU suficiente para rodar satisfatoriamente a maioria dos programas
interpretados. Não estamos mais nos anos 80, com Pascal e máquinas de 8 bits
para justificar o argumento de lentidão. Ainda mais com o advento do bytecoding e
compiladores JIT, o fato de ser interpretado há muito tempo deixou de ser um
penalizador. É claro que é difícil chegar ao tempo de execução de uma aplicação
feita em C, mas por outro lado, uma perda de velocidade significa um aumento no
"tempo do programador", no fato dele escrever mais rápido e menos propenso
ao erro.
Alguns dados sobre a produtividade do programador
podem ser vistos neste estudo (PDF em inglês) realizado por Lutz
Prechelt.
Programas escritos em Python podem ser mais lentos
para executar em algumas situações, mas, em geral, levam menos tempo para
implementá-los. Se o problema é realmente desempenho, deve-se implementar as
partes críticas em linguagens compiladas ou até mesmo em assembly.
A questão é quanto do código total possui estes requisitos.
Que empresas usam
Python?
Quanto à utilização comercial de Python: Muitas
empresas de grande porte vêm adotando Python em suas linhas de desenvolvimento.
A mais importante delas é o Google. Pode-se citar ainda outras: Industrial
Light and Magic, NASA, Thawte, Inktomi, IBM. No Brasil: Serpro, Haxent, Async,
Conectiva, Embratel, GPr, Hiperlógica. Sem falar nas que utilizam Python
indiretamente, através do Zope e do Plone.
Atualmente, a linguagem ocupa a sexta posição no
ranking de linguagens utilizadas em projetos de Software Livre hospedados no SourceForge.
Uma pergunta importante a ser feita é que empresas
não usam e por quê?
No site oficial do Python,
pode-se encontrar uma lista de empresas que usam Python. Outra fonte é o Pythonology.
Que
escolas/faculdades/universidades usam Python?
São ainda poucas, mas com resultados excelentes.
O IME e a POLI na USP, na UFSC, nos departamentos
de Física e Matemática. Na Unicamp em cursos de extensão e na PUC-Campinas em
cursos de graduação. Na Universidade Federal Rural de Pernambuco no curso de
Licenciatura em Computação. O NAPI (Nucleo de Apoio a Projetos de
Informática), da UCPel (Universidade Católica de Pelotas),
utiliza Python em grande parte dos projetos de pesquisa realizados.
Na Suíça na Fachhochschule de Zurique em cursos de
Pós-Graduação.
O caso mais famoso talvez seja o da Yorktown High
School, Arlington, Virginia. O Prof. Jeffrey Elkner, desta escola, é um dos
autores do livro How to Think Like a Computer Scientist - Learning with
Python. No MIT (Massachusetts Institute of Technology), em Boston, Python é
usado para introduzir programação a iniciantes na aula "6.00: Introduction
to Computer Science and Programming".
A partir deste ano, estamos introduzindo Python na
disciplina de Programação I do curso de Bacharelado em Sistemas de Informação do Instituto
Superior Tupy em Joinville, Santa Catarina, substituindo o C++.
Para maiores informações sobre este tema, acesse a
lista EDU-SIG.
Python é uma
linguagem séria ou de brinquedo?
As duas coisas, dependendo do ponto de vista.
Python não é uma linguagem de brinquedo se isso
significar que é impossível fazer aplicações de uso real com ela, como editores
ou desktops. Aliás, muito pelo contrário. Diversas empresas utilizam Python de
maneira 'séria' para ligar seus muitos componentes - veja o Pythonology novamente.
Python é utilizada como linguagem de scripting em diversos
programas sérios, como jogos, renderizadores (desses que fazem filmes de
sucesso). Se Python não fosse séria - nesse sentido - a NASA e a OTAN não a
usariam.
Por outro lado, Python é uma linguagem de brinquedo
se isso significa que é possível se divertir com ela. Python segue as
definições de "brinquedo" do projetista de jogos Greg Cotikyan,
mas isso depende muito mais do estado de espírito de quem está o.
Python é uma linguagem séria, ótima para quem está
iniciando e, melhor ainda, poderosa para quem já é programador. Algo difícil de
se obter em uma linguagem, diga-se de passagem. É possível se desenvolver
qualquer tipo de aplicação em Python. É uma linguagem que dá liberdade ao
programador e faz com que ele tenha que se preocupar em resolver os seus
problemas e não se preocupar em deixar o compilador "feliz".
Por outro lado, uma linguagem cujo nome vem de um
seriado de comédia não deve ficar feliz em ser considerada uma linguagem
"séria". Definitivamente ela é de brinquedo. Programa em Python é
resgatar o prazer e a diversão do ato de criar e interagir.
Dá pra escrever
programas sérios com Python?
Se você é um programador sério, sim. ![;)](file:///C:/Users/AL0879~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png)
![;)](file:///C:/Users/AL0879~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png)
O que existe de "programa sério" que utiliza
Python não é brincadeira (perdão pelo trocadilho), o Google pode ser citado
como o principal exemplo mais uma vez.
Dá para escrever programas
"profissionais" com Python, sendo o Zope talvez o exemplo mais
notório. Além dele podemos citar: skencil, txt2tags, ERP5, Plone, Schooltool,
Chandler, Plucker, ...
Dá pra escrever
programas gráficos com Python?
Sim, e as opções são tantas que podem até
atrapalhar. Pode-se utilizar quase a totalidade dos widgetsets disponíveis para
Linux em Python e em Windows é possível utilizar a MFC e as APIs de mais alto
nível desta plataforma.
Pode-se utilizar: wxPython, PyGTk, PyQt,
PythonCard, Tkinter, PyGlade, PMW, Kiwi, ncurses, OpenGL. Tem também: PIL,
VPython.
Para uma comparação mais extensa entre as diversas
opções para desenvolvimento de aplicações GUI, dêem uma olhada na ComparacaoDeGUIs.
Uma boa referência é o Python
Eggs.
O Blender é um excelente exemplo de programa
gráfico que utiliza python no desenvolvimento de seu
código. Permite inclusive a facilidade de se inserir plug-ins através desta
linguagem.
Ser fácil não é um
problema?
Sim e não.
Sim, isto pode acontecer. Mas nada que não seja
controlável. A facilidade pode gerar um péssimo hábito: o de sentar em um
computador e começar a programar sem planejar ou sem de fato resolver o
problema desejado antes. Mas acredito que todas aslinguagens, mesmo as
compiladas, hoje em dia, não estão livres desse problema.
Se você ensina um estudante a utilizar um IDE, ele
terá um botão para "compilar e executar" automaticamente o programa.
É praticamente a mesma coisa. O professor portanto deve trabalhar isso com os
alunos, de tal maneira que esse hábito não se desenvolva.
Ser fácil pode também ser um problema para
masoquistas que desejam usar Python ou não-masoquistas que insistem em não usar
e ainda assim competir em tempo e qualidade com quem usa.
Não. Ser fácil quer dizer que você não vai perder
tempo "traduzindo mentalmente" o que pensa do problema em sua solução
em Python, ou seja, você não tem muito "atrito" com a linguagem. Isto
é muito importante, principalmente para cursos introdutórios.
Os alunos não
ficarão com os conceitos fracos ou mal acostumados?
Sim e não.
Sim. Os alunos tendem a ficar com alguns conceitos
fracos. Isso, no entanto, não é culpa da linguagem. Os alunos que estudarem de
fato vão aprender e reter os conceitos - desde que o professor não tente
ensinar história da computação, programação estruturada, programação lógica e
funcional, inteligência artificial e construção de compiladores em seu curso de
4 meses. Se seguir um currículo mínimo: introdução a computação e programação
estruturada (if-then-else, laços, e conceitos básicos), os alunos que
praticarem vão absorver tudo o que é ensinado.
Se os alunos só aprenderem Python, as chances são
maiores. Universidade não tem esse nome à toa, não existe um único conceito que
se for aprendido torna todos os demais obsoletos. Python é uma excelente
ferramenta, ponto final.
Não. Python suporta os paradigmas estrutural,
modular, funcional e Orientado a Objetos. São vários conceitos a serem
explorados.
Os conceitos serão ensinados. Os algoritmos podem
ser explicados normalmente em Python e, mesmo que Python já disponibilize
algumas estruturas de dados como listas e dicionários, é possível fazer com que
o aluno reimplemente-as. Tudo depende do foco que o professor quer dar ao seu
curso.
Conceitos como alocação de memória, heap,
pilha, listas ligadas, arvores binárias podem ser explicados numa etapa mais
avançada dos cursos. No início é mais interessante explica para o aluno coisas
como: implementar uma calculadora pós-fixada utilizando pilha, ordenar uma
lista, fazer uma pesquisa binária nessa lista, percorrer uma árvore binária,
utilizando as estruturas de dados nativas de Python.
Dá pra ensinar X
usando Python? Onde X pode ser "classes", "herança",
"ponteiros", "threads", "estruturas de dados",
"ordenação", "recursão", "sockets", ...
Sim, com exceção talvez de ponteiros, o que tem um
lado positivo. O conceito de aliases de Python e o método de
chamada (por referência) esconde bem os ponteiros. Por outro lado, é possível
simular o conceito de ponteiros usando dicionários, se for realmente necessário
ensinar.
De maneira geral, as bibliotecas Python procuram
não modificar muito o modus operandi da API C subjacente, e
isso é *muito* bom. Por exemplo, quem aprende BSD/Sockets em Python
vai saber lidar com Sockets em C, basta conhecer as
idiossincrasias do C, como casts e estruturas.
Para ser justo, é possível programar sem ponteiros
também em C++ (grande parte da má fama de C++ vem do seu mau uso), mas
infelizmente isso não isentará o aluno de ter de aprender ponteiros, pois em
alguns casos seu uso é mandatório.
Certas coisas não devem ser ensinadas utilizando
Python, a não ser como linguagem de prototipagem. Por exemplo, ponteiros estão
muito mais relacionados com programação de sistemas em baixo nível, e Python
tem como foco um nível acima. No entanto, para o estudo de algoritmos, é
difícil que exista coisa melhor.
Algumas estruturas de dados já consagradas são
nativas em Python, mas nada impede que elas sejam reimplementadas. Além disso,
existem outras estruturas de dados que não fazem parte da linguagem.
E o mercado de
trabalho pros alunos?
Está faltando gente qualificada em Python no
mercado. E quem programa em Python pode entender Zope e Plone e assim ganhar mais
espaço no mercado.
No que se refere a conhecimentos, quanto mais
melhor! Python não vai evitar que os alunos tenham que aprender outras
linguagens ou ferramentas. Estar preparado para o mercado de trabalho é ser um
curioso insaciável, ter prazer em resolver os problemas da profissão (porque
trabalhar é resolver problemas) e agir com humildade e respeito com seus
colegas. Seguindo estas regras, alguém tem que se esforçar muito para
fracassar.
O mercado de trabalho funciona com uma regra
simples: de demanda e oferta. As duas necessitam crescer juntas ou ocorre um
desequilíbrio.
Atualmente a demanda para profissionais Python vem
crescendo de forma tímida por um único motivo: falta de oferta.
Não deveríamos
esperar até haver um mercado maior, para então começar a ensinar utilizando
Python?
Depende do perfil da universidade. Existem
universidades que preferem treinar o aluno para o mercado de
trabalho atual. Essa é uma das características das universidades que possuem
cursos de 2 anos.
Por outro lado existe um outro tipo de
universidade, que prefere preparar melhor o aluno e torná-lo
apto a se adaptar ao mercado de forma muito mais eficiente. A não muitos anos
atrás, existiam universidades que treinavam seus alunos para desenvolver software
em Clipper e não em Pascal (por exemplo). A explicação para isso é a de que o
mercado pedia Clipper. Quando o Delphi da Borland surgiu, quem se adaptou
melhor? O aluno que aprendeu Clipper solicitado pelo mercado ou o aluno
que aprendeu os fundamentos da programação em Pascal?
As universidades deveriam estar a vários passos
adiante do mercado, pois a função delas é a de preparar os
alunos para o futuro e não treiná-los para o mercado.
Que livros e outras
bibliografias existem sobre Python?
Mais informações na seção Aprenda
Mais.
Uma boa relação está disponível aqui em DocumentacaoPython.
Qual o melhor livro
para aprender a programar em Python?
Existem vários livros para aprender Python.
Mais informações na seção Aprenda
Mais.
Como faço para
executar uma aplicação gráfica (GUI) sem que apareça a janela do prompt de
comandos do Windows?
Existem duas formas de resolver este problema:
·
modifique a extensão do arquivo principal da sua aplicação de .py para .pyw
·
execute a aplicação com o interpretador pythonw.exe e
não com o python.exe.
Onde posso aprender
mais sobre Python e Unicode?
Veja esta página com artigos sobre Python e
Unicode: PythonUnicode
Onde posso tirar
minhas dúvidas?
- Documentação
que vem junto com a linguagem
·
O verdadeiro oráculo moderno: http://www.google.com
·
python-list@python.org (inglês)
·
python-brasil no Google Groups (português)
·
http://www.pythonbrasil.com.br (português)
RETIRADO DE:http://wiki.python.org.br/PerguntasFrequentes/SobrePython
Assinar:
Postagens (Atom)
Follow Us
Were this world an endless plain, and by sailing eastward we could for ever reach new distances