Melhor resposta
Longa história.
TL; versão DR é a seguinte do meu ponto de vista:
- Pode-se ler os livros originais do Smalltalk e obter valor deles ao usar o Pharo, então, há definitivamente uma herança sólida do Smalltalk.
- No front de ferramentas, há vários avanços no Pharo que o tornam bastante único e diferente do Smalltalk 80. Por exemplo:
- GToolkit, com inspetores super poderosos
- Spotter, permitindo uma maneira realmente interessante de acessar itens de o sistema, etc
- Spec e Bloc para outras maneiras de fazer UI além de MVC e Morphic
- Limpezas e adições aos pacotes padrão do Squeak
- Zinc, NeoJson, STON,… todos originados da comunidade Pharo
- Roassal2, para visualizações, também originados da comunidade Pharo
- A VM, que agora é uma OpenSmalltalk / opensmalltalk-vm esforço com áreas Pharo específicas é mais rápido, w om um JIT melhor e outro conjunto de bytecode. O gerenciamento de memória com encaminhamento de ponteiro torna: muito mais rápido. Verifique Ajustando o coletor de lixo Pharo , verifique resumo de 7 pontos do gerenciador de memória Spur , bem, verifique tudo naquele blog, ele simplesmente arrasa.
- Temos características. Temos XStreams. Temos Calypso. Temos Iceberg. Temos a coisa dos críticos. Temos o compilador Opal. Temos Rubrik para edição de texto. Temos o anel como modelo de código. Podemos inspecionar métodos AST. Temos Beacon para uma estrutura de registro de objetos. Temos WeakReferences funcionando. Temos UnifiedFFI. Temos 64 bits. Temos combustível. Temos Seaside3. Temos CommandLineHandlers legais. Temos escala para trabalho de CLI. Temos Epicea para mudanças de código. Temos uma API FileSystem reprojetada. Temos HelpSystem. Temos uma infraestrutura funcional com CI e Git e que rastreamento de problemas etc. estão funcionando bem juntos. Temos Pilar para produção de livros. Temos TaskIT para um trabalho fácil com futuros. Temos um sistema de KeyMapping decente. Temos um Morphic limpo (ainda há mais a fazer). Temos OSWindow. Temos Refactorings e CodeRewriter. Temos MetaLinks com refletividade. Temos Atenas para gráficos. Temos suporte para IoT.
Então, sim, é inspirado em Smalltalk. Mas definitivamente não Smalltalk-80. É Pharo. Usamos um farol como nosso logotipo. Porque gostamos quando há alguma luz brilhante abrindo caminho para a felicidade do desenvolvedor.
Smalltalk é ótimo.
Pharo é melhor quando se trata de obter resultados de negócios ao usar tecnologia do século 21 . Porque combinar ferramentas Pharo umas com as outras leva a resultados poderosos.
E sim, eu sou opinativo.
Resposta
Pharo é um dialeto de Smalltalk. Em sua sintaxe, semântica e implementação, o Pharo é uma versão do Smalltalk-80 e um parente muito próximo dos dialetos Squeak e Cuis. Todos os três descendem diretamente do Smalltalk-80 v1 que a Apple recebeu da Xerox como parte do processo de escrever “Smalltalk-80: a linguagem e sua implementação”, também conhecido como “o livro azul”. Alan Kay liderou uma equipe na Apple nos anos 90 que desenvolveu o dialeto Squeak e a implementação começando com Smalltalk-80 v1. Mais tarde, Cuis e Pharo saíram de Squeak. Mas todos os três fizeram a transição para o meu Spur VM, uma evolução do JIT VM que em 2008/9/10 eu derivado do intérprete de volta ao futuro original VM para Squeak.
Esses três dialetos O parente mais próximo um do outro é VisualWorks Smalltalk, que desce diretamente de Smalltalk-80 v2, a versão final desenvolvida no Xerox PARC. Todos os quatro são distinguíveis de outros Smalltalks por meio de contextos de suporte (registros de ativação de primeira classe de Smalltalk) por meio da pseudo-variável thisContext. Um contexto é um registro de ativação; é o objeto que mantém o estado de um método em execução ou fechamento de bloco. Uma diferença superficial é que a família Squeak suporta tuplas (uma construção Array conveniente) e uma instrução case, enquanto VisualWorks tem um sistema de namespace e uma forma literal BindingReference para acessar objetos através dos limites do namespace.
Uma coisa única sobre Smalltalk e seus parentes próximos Self e Novilíngua é que os sistemas são autodefinidos; classes, métodos e contextos, todos sendo objetos de primeira classe definidos em termos de classes e métodos. Isso se estende ao seu compilador e depurador, o sistema de exceção, etc. Isso permite que Smalltalk evolua em um nível de linguagem. Tuplas, a instrução case e os namespaces foram todos implementados em seus respectivos sistemas sem a necessidade de modificar nenhuma máquina virtual subjacente. Essa capacidade de evoluir torna a definição exata do que Smalltalk é um tanto problemática. Um Smalltalk saudável é um Smalltalk em evolução; um alvo em movimento.
Alguns, talvez muitos, na comunidade Pharo pensam que Smalltalk ganhou uma fama nos anos 90 e alguns estão infelizes com a falta de suporte para desenvolvedores e foco em Etoys que a equipe de pesquisa de Alan Kay tinha, compreensivelmente como de fato Etoys era o foco da equipe. Consequentemente, o Pharo tem uma ênfase muito diferente e quer progredir longe do suporte multimídia agora envelhecido do Squeak para uma melhor integração com o ecossistema de computação atual, como o github, e para reinventar a programação como um processo exploratório muito mais dinâmico; veja, por exemplo, o trabalho de visualização ágil acima do Rossal e do kit de ferramentas GT. Conseqüentemente, alguns na comunidade Pharo querem negar que Pharo seja um dialeto de Smalltalk. Esta é uma posição que eu entendo, mas considero falsa na realidade (inegavelmente, em sua sintaxe, semântica e implementação Pharo / é / uma versão do Smalltalk-80) e um tanto desrespeitosa e ingrata (Pharo é um ótimo ambiente de programação, tanto porque tem ótimas pessoas fazendo um ótimo trabalho nele e são capazes porque é um Smalltalk). Mas não importa. Pharo se destaca em seus méritos, um dialeto de Smalltalk poderoso e em rápida evolução, que oferece benefícios de produtividade radicais aos programadores. Espero que você dê mais do que uma olhada superficial nele. Está indo a lugares.