b'\n_START_ARTICLE_\nSelf (linguagem de programa\xc3\xa7\xc3\xa3o)\n_START_SECTION_\nHist\xc3\xb3ria\n_START_PARAGRAPH_\nSelf foi projetada principalmente por David Ungar e Randall Smith, em 1986, enquanto trabalhavam na Xerox PARC. O seu objetivo era fazer avan\xc3\xa7ar o estado da arte em pesquisa de linguagem de programa\xc3\xa7\xc3\xa3o orientada a objeto, uma vez que a Smalltalk-80 fora lan\xc3\xa7ada pelos laborat\xc3\xb3rios e havia come\xc3\xa7ado a ser levada a s\xc3\xa9rio pela ind\xc3\xbastria. Eles se mudaram para a Universidade de Stanford e continuaram a trabalhar sobre a linguagem, construindo o primeiro compilador Self funcional em 1987. Nesse ponto, o foco mudou para tentar se trazer todo um sistema para a Self, e n\xc3\xa3o somente a linguagem._NEWLINE_A primeira vers\xc3\xa3o p\xc3\xbablica foi lan\xc3\xa7ada em 1990, e no ano seguinte a equipe desenvolvedora se mudou para a Sun Microsystems onde continuou a trabalhar na linguagem. V\xc3\xa1rios novas vers\xc3\xb5es se seguiram, at\xc3\xa9 ficar em grande parte adormecida, em 1995, na vers\xc3\xa3o 4.0. A vers\xc3\xa3o mais recente, 4.3, foi lan\xc3\xa7ada em 2006 e roda em Mac OS X e Solaris. A nova vers\xc3\xa3o est\xc3\xa1 sendo desenvolvida para Mac OS X e Linux por um grupo de programadores independentes, que levou o projeto alguns meses atr\xc3\xa1s, e eles est\xc3\xa3o prestes a lan\xc3\xa7ar uma vers\xc3\xa3o 4.4 que agora est\xc3\xa1 na fase de beta 4._NEWLINE_Self tamb\xc3\xa9m inspirou uma s\xc3\xa9rie de linguagens baseadas em seus conceitos. Mais not\xc3\xa1vel, talvez, foi a linguagem NewtonScript para o Apple Newton e a linguagem JavaScript utilizada principalmente para p\xc3\xa1ginas da web din\xc3\xa2micas em todos os navegadores modernos. Outros exemplos incluem a Io, a Cel, a Lisaac e a Agora. O sistema de objetos distribu\xc3\xaddos da IBM Tivoli Framework, desenvolvido em 1990, foi, no n\xc3\xadvel mais baixo, um prot\xc3\xb3tipo de sistema baseados em objetos inspirado pela Self.\n_START_SECTION_\nDescri\xc3\xa7\xc3\xa3o da linguagem\n_START_PARAGRAPH_\nObjetos Self s\xc3\xa3o um conjunto de "slots". Slots s\xc3\xa3o m\xc3\xa9todos de acesso que retornam valores, e colocando dois pontos (":") ap\xc3\xb3s o nome de um slot se define o seu valor. Por exemplo, um slot chamado "nome",_NEWLINE_   myPerson nome_NEWLINE_retorna o valor em nome, e_NEWLINE_   myPerson nome:\'foo\'_NEWLINE_o define._NEWLINE_Self, como Smalltalk, usa  blocos para o controle de fluxo e outras fun\xc3\xa7\xc3\xb5es. M\xc3\xa9todos s\xc3\xa3o objetos que cont\xc3\xaam c\xc3\xb3digo, al\xc3\xa9m de slots (que usam de argumentos e valores tempor\xc3\xa1rios), e podem ser colocados em um slot Self, tal como qualquer outro objeto: um n\xc3\xbamero, por exemplo. A sintaxe \xc3\xa9 a mesma nos dois casos._NEWLINE_Note que n\xc3\xa3o h\xc3\xa1 distin\xc3\xa7\xc3\xa3o em Self entre campos e m\xc3\xa9todos: tudo \xc3\xa9 um slot. Uma vez que acessar slots atrav\xc3\xa9s de mensagens constitui a maioria da sintaxe em Self, muitas mensagens s\xc3\xa3o enviadas para "self", e "self" pode ser deixado de fora (da\xc3\xad o nome).'