como aprender Smalltalk pode torná—lo um melhor desenvolvedor

Smalltalk é amplamente percebido como uma língua antiga e moribunda-uma antiguidade de uma era passada. Nada poderia estar mais longe da verdade.O Smalltalk é ainda muito relevante. É uma excelente linguagem de instrução para ensinar programação a pessoas que não têm formação técnica. É uma linguagem de prototipagem superlativa para startups. É uma linguagem empresarial industrial usada por empresas grandes e pequenas em todo o mundo. Existem boas razões para considerar o uso de Smalltalk moderno hoje, uma vez que muito mudou nos últimos anos para melhorar suas perspectivas.

você não tem que usar Smalltalk na produção hoje, mas tente codificar algo em Smalltalk e veja como ele se sente. Ele deve se sentir familiar, porque a implementação do Smalltalk do paradigma orientado a objetos (OO) é tão excelente que tem influenciado uma geração inteira de linguagens OO, tais como Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6, Erlang, Groovy, Scala, Dart, Swift, e assim por diante.Ao aprender Smalltalk, você vai entender como todas essas características úteis nas línguas OO de hoje vieram a ser. Aprender Smalltalk também pode lhe dar uma grande vantagem em habilidades de programação entre seus pares, e pode ser uma grande ferramenta para ensinar programação para iniciantes.O que é que o Smalltalk nos deu?Smalltalk tem um rico legado de contribuições para a indústria de software. Basta olhar para esta lista de características e tecnologias que introduziu:

  • Smalltalk introduziu o mundo para a linguagem virtual máquina (ou VM), que permite que o software seja independente de plataforma. Esta é a mesma tecnologia que sustenta Java (JVM) e.NET, bem como Android (Dalvik).
  • Smalltalk also pioneered JIT (just-in-time) compilation, a technique for dramatically improving the performance of bytecode software such as Java.
  • do Smalltalk veio o primeiro IDE moderno (ambiente de desenvolvimento integrado), que incluía um editor de texto, um navegador de sistema ou classe, um objeto ou inspetor de propriedade, e um depurador. Isso levou aos muitos IDEs que os desenvolvedores favorecem hoje, como Visual Studio, Xcode, e IntelliJ IDEA. Pessoalmente, acho que nenhum desses IDE pode se comparar com a IDE de Smalltalk na simplicidade, elegância e velocidade de desenvolvimento; o original ainda é o melhor!
  • desde o início, a Smalltalk tinha encerramentos, que são lexicamente escopadas funções de primeira classe. Em essência, um fechamento é uma função de callback que pode ver variáveis não locais no local onde elas foram definidas. Isto pode ajudá-lo a escrever um código muito mais compacto e legível. Os fechamentos estão encontrando seu caminho em muitas linguagens principais, como Java, C#, e PHP.Smalltalk foi a primeira ferramenta de linguagem a suportar a programação “AO VIVO” e técnicas avançadas de depuração, tais como a inspeção on-the-fly e mudanças de código durante a execução. Hoje, depuração ao vivo é possível em C# com Visual Studio ‘ S “Edit and Continue” e em Java com HotSwap.
  • Smalltalk introduziu MVC (Model-View-Controller) no mundo. MVC é um padrão arquitetônico de software para a implementação de interfaces de usuário. É popular com aplicações GUI desktop e aplicações web. Hoje em dia, é a arquitetura que a maioria dos desenvolvedores da web aprendem primeiro.
  • em grande medida, o Smalltalk é responsável por nos dar desenvolvimento orientado a testes (ou TDD) e programação extrema (ou XP), que são ambos muito influentes nas práticas ágeis padrão de hoje.
  • Smalltalk fez “duck typing” uma palavra doméstica (bem, se a sua casa tem um programador nela). A datilografia de pato é onde a” verificação de tipo ” é adiada até o tempo de execução—quando as capacidades de reflexão são usadas para garantir o comportamento correto. Encontramos datilografia de pato em muitas línguas hoje, incluindo Java, Python, Common Lisp, Go, Groovy, Objective-C, e PHP.
  • Smalltalk foi pioneiro no desenvolvimento de bases de dados de objetos. Enquanto eles não conseguiram entrar no mainstream, as bases de dados de objetos têm seus nichos de mercado. O melhor exemplo de um produto de base de dados de objetos é GemStone/S, que é bem adequado para escaláveis, de alto desempenho, sistemas distribuídos multitier.Smalltalk nos deu o primeiro navegador de refactoring. É claro que o Suporte de refactoração pode ser encontrado na maioria dos Oides hoje.
  • Smalltalk foi instrumental no desenvolvimento da interface gráfica do usuário (ou GUI) e da interface de usuário “what you see is what you get” (WYSIWYG).Mas como aprender Smalltalk pode fazer de mim um melhor desenvolvedor?Smalltalk tem várias características assassinas que estavam muito à frente do seu tempo.:
    • com base em Imagem de persistência
    • Objetos: Tudo é um objeto, e os objetos se comunicam apenas através de mensagens (o mais “puro” OO, e um dos primeiros)
    • “ao Vivo” de programação
    • técnicas de depuração Avançadas, tais como on-the-fly alterações de código
    • Um simples e organizada interface IDE
    • linguagens específicas de Domínio (fanático por dsls): A única maneira de Smalltalk funciona, então os programadores têm que se concentrar no domínio problema usando uma linguagem e notação que é natural para esse domínio

    e há algumas outras características que fazem Smalltalk especial também.

    em essência, a principal vantagem do Smalltalk como uma linguagem produtiva e ferramenta de aprendizagem é que ele elimina a maioria, se não todos, do estresse cognitivo nas principais línguas OO, como Java. Smalltalk não apresenta nenhuma desordem sintática ou características de distração. Ele simplesmente sai do seu caminho para que você possa focar toda a sua atenção no problema ou aplicação em mãos. Não é que Java seja uma linguagem ruim para ser mais complexa (e ter nomes de classe de 30 caracteres); o que estou dizendo é que aprender uma linguagem OO livre pode realmente fazer de você um programador Java melhor uma vez que você entenda seus conceitos OO de outra perspectiva.

    eliminar o stress cognitivo é um objectivo fundamental de muitas línguas—por exemplo, Python, Ruby, Elixir, Elm e Go. Mesmo que não o sintas, o stress existe. Diz-se muitas vezes que a programação em Smalltalk ou Python é como Zen; a sua mente flui sem esforço com a tarefa. Esta é a beleza e o valor da simplicidade da linguagem, e Smalltalk tem isso em espadas.

    em Smalltalk, OO é destilado para seus conceitos mais básicos de classes e métodos, metaclasses e reflexão, e mais importante passagem de mensagem. Smalltalk, em virtude de sua pureza e consistência de objetos, lhe dará uma compreensão profundamente melhor da programação orientada a objetos e como usá-la para o seu melhor efeito.

    a simplicidade de Smalltalk também a torna uma linguagem de instrução ideal para a aprendizagem da programação, especialmente se você não tem um fundo técnico. A simplicidade da linguagem e das ferramentas permite-lhe concentrar as suas energias na aprendizagem de técnicas de programação, não nas formalidades linguísticas.Como funciona o Smalltalk? A abordagem baseada em imagens para a programação

    a principal reivindicação de Smalltalk à fama é a sua abordagem baseada em imagens para a criação de software. Uma imagem é uma imagem instantânea da memória que contém todos os objetos em sua aplicação ou sistema em execução. Ele encapsula todo o estado de execução de seu programa. Uma imagem pode ser gravada em disco, e a execução pode ser retomada mais tarde exatamente de onde você parou!

    a imagem de Smalltalk pode parecer um pouco estranha, mas na verdade ela tem uma forte semelhança com algo amplamente usado em si hoje: imagens do sistema na virtualização do sistema operacional, tal como encontramos no VMware e VirtualBox. Você tem que lembrar que Smalltalk era originalmente um sistema operacional autônomo quando foi criado na Xerox PARC na década de 1970.

    a imagem de Smalltalk também tem uma forte semelhança com o DOM de uma página web (Document Object Model). Note que uma aplicação web é essencialmente um sistema por si só, isolado no navegador web e negado acesso direto ao sistema de arquivos do host e outros recursos. Quando um navegador Web fecha, o estado do site dinâmico pode ser salvo ou cache, e da próxima vez que o navegador retomar, o site pode ser restaurado no navegador (com algumas limitações).

    até a folha de cálculo baixa está próxima do conceito de imagem. Encapsula todo o estado de execução. Não pode aceder aos recursos do sistema de acolhimento. Pode ser salvo e restaurado. E você deve saber que planilhas ainda são usadas para desenvolver modelos e aplicações sofisticadas com sua própria linguagem.

    assim o conceito de imagem é bastante prevalente. É uma maneira tão agradável de desenvolver software que uma versão do conceito de imagem foi criada para JavaScript no Kernel animado.

    Tudo em Smalltalk é um objeto

    Sem exceções: Tudo é um objeto. Não há tipos de dados primitivos. Não existem estruturas de controlo como a selecção e a iteração! Tudo no Smalltalk é feito enviando mensagens para objetos. Isto é o que torna o Smalltalk tão simples, elegante e fácil de aprender. Isto é o que torna a linguagem tão totalmente limpa sintaticamente.

    Por exemplo, o seguinte fragmento de código aumenta o Número de classes de suporte a um não-recursiva do fatorial de operação:

    Number extend
    ifFalse: .
    ^ (c fold: ) ]]].

    7 factorial printNl.

    7 my_factorial printNl. "should be the same result as the previous line"

    Aqui, ifTrue: é uma palavra-chave de mensagem enviada para o objeto Boolean que os resultados da avaliação da expressão (self < 2). O argumento para a mensagem de palavra-chave é um bloco de código (delineado por parêntesis rectos). Na verdade, ifTrue: é a primeira parte de uma mensagem de palavra-chave de duas partes, sendo a segunda parte ifFalse:.

    a nova mensagem unária é enviada para a classe de recolha ordered para criar uma nova colecção. A mensagem printNl é enviada para o resultado (que é um objeto) de enviar a mensagem my_factorial para o número 7. Tudo isto quase parece uma linguagem natural!

    a reflexão Computacional em Smalltalk

    a reflexão em Smalltalk é particularmente valiosa como um meio para um programa inspecionar sua própria estrutura e computação em tempo de execução. Isso confere um enorme poder, permitindo que os programas se estendam com novas classes e métodos ou perguntem “quem enviou esta mensagem para mim?”

    a reflexão computacional é usada para implementar uma forma poderosa de lidar com erros. Quando um objeto é enviado uma mensagem que não implementa, ele recebe uma mensagem doesnot understand: mensagem, juntamente com uma reificação da mensagem original. Há muitas coisas que o programa pode fazer com o doesnot understand: mensagem, incluindo estender-se com nova funcionalidade!

    o conceito e a reflexão da imagem também permitem que o Smalltalk elimine o limite de Aplicação / IDE. Tudo o que você precisa para desenvolver, depurar e executar sua aplicação está na imagem. Não há necessidade de deixar o seu ambiente de Aplicação. É uma abordagem completamente holística ao desenvolvimento de software que torna tudo mais Zen-like e produtivo.

    o renascimento de Smalltalk

    os últimos 15 anos de desenvolvimento no mundo de Smalltalk tornaram a língua muito mais atraente.

    Smalltalk está agora disponível para programação web front-end usando Amber Smalltalk, que transpila para JavaScript. O desenvolvimento de âmbar ocorre inteiramente no navegador. Uma das coisas incríveis sobre Amber é que quando você importa uma biblioteca JavaScript, seus objetos podem ser tratados como objetos Smalltalk.

    em 2002, o Seaside web framework foi lançado, tornando-se a ferramenta mais popular para o desenvolvimento da web em Smalltalk. A sua abordagem baseada na continuação forneceu um mecanismo convencional de “call/return” para a sua aplicação web. Ele pode ajudar a resolver problemas como o duplo pedido e back button problemas. Bastante revolucionário para seu tempo, e ainda não comumente adotado em outros frameworks web.

    o projeto Pharo começou em 2008 para se concentrar na engenharia de software moderna e técnicas de desenvolvimento. Ele trouxe Smalltalk muito mais ao longo do que o anterior projeto de código aberto chamado Squeak, que foi baseado no venerável dialeto Smalltalk-80. O projeto Pharo também gerou uma pesquisa sobre um novo tipo de IDE chamado o glamouroso Toolkit. É baseado na idéia de que seu ambiente de programação deve ser “moldável” para atender às suas necessidades.No ano passado, o Delphin Smalltalk tornou-se open source, oferecendo outra opção maravilhosa para os fãs do Smalltalk. Dolphin Smalltalk tem sido frequentemente elogiado por ter uma das melhores implementações da IDE Smalltalk.

    o legado do Smalltalk: Tornando a programação divertida

    quando você usa as muitas facilidades do desenvolvimento de software moderno, tais como o JVM, Eclipse IDE, fechamentos, “live coding”, MVC, TDD, VMware, e até mesmo o aplicativo web antigo, pense em suas origens em Smalltalk e mantenha um maior respeito pelo que você está fazendo. Tenha um maior apreço pelas línguas que você usa, sejam elas objetive-C, Python, Ruby, Groovy, Scala, Dart, ou Swift.Trabalhar com a linguagem que originou todas estas grandes funcionalidades e tecnologias proporciona uma oportunidade única para melhorar muito o seu conhecimento, a sua acuidade mental e a sua produtividade como desenvolvedor de software. A palavra “diversão” nem sempre entra em discussões sobre engenharia de software, mas eu acho que Smalltalk—e seus irmãos OO—fornecer a baixa barreira cognitiva e facilidade de programação que pode tornar a engenharia de software divertido.



+