Ruby está se tornando popular , principalmente devido à influência do Ruby no Rails, mas parece que ele está atualmente lutando durante a adolescência. Existem muitas semelhanças entre Ruby e Smalltalk - maglev é uma prova disso. Apesar de ter uma sintaxe mais incomum, o Smalltalk possui toda (se não mais) a beleza orientada a objetos do Ruby.
Pelo que li, Smalltalk parece ter Ruby batendo:
- Maturidade (desenvolvida na década de 1970)
- Estabilidade
- Suporte comercial
- Controle de fonte distribuída (entende a estrutura do código, não apenas a diferenciação de texto)
- Várias implementações da VM
- Suporte multiplataforma
- O framework web à beira-mar como uma forte alternativa ao Rails
Parece que Ruby está apenas reinventando a roda. Então, por que os desenvolvedores Ruby não usam o SmallTalk? O que Ruby tem no Smalltalk não?
Para constar: eu sou um cara Ruby com pouca ou nenhuma experiência em Smalltalk, mas estou começando a me perguntar por quê.
Edit: Eu acho que a questão da facilidade de script foi abordada pelo GNU Smalltalk . Pelo que entendi, isso permite que você escreva smalltalk em arquivos de texto antigos comuns e não precisa mais estar no IDE Smalltalk. Você pode executar seus scripts com:
gst smalltalk_file
fonte
Respostas:
Sou mais um Pythonista do que um usuário Ruby, no entanto, as mesmas coisas são válidas para Ruby pelas mesmas razões.
A arquitetura do Smalltalk é um tanto insular, enquanto Python e Ruby foram criados desde o início para facilitar a integração. O Smalltalk nunca ganhou um corpo de suporte a aplicativos híbridos da mesma forma que o Python e o Ruby, então o conceito de 'smalltalk como linguagem de script incorporada' nunca pegou.
Além disso, Java não era a coisa mais fácil de interagir com outras bases de código (o JNI é bastante desajeitado), mas isso não impediu que ele ganhasse conhecimento. Na IMO, o argumento de interface é significativo - a facilidade de incorporação não prejudica o Python - mas esse argumento tem peso moderado, pois nem todos os aplicativos exigem esse recurso. Além disso, versões posteriores do Smalltalk abordaram substancialmente a insularidade.
A biblioteca de classes da maioria das principais implementações de conversas pequenas (VisualWorks, VisualAge etc.) era grande e tinha reputação de uma curva de aprendizado bastante acentuada. A maioria das funcionalidades principais do Smalltalk está oculta em algum lugar da biblioteca de classes, até mesmo itens básicos como fluxos e coleções. O paradigma da linguagem também é um choque cultural para alguém não familiarizado com ele, e a visão fragmentada do programa apresentado pelo navegador é bem diferente do que a maioria das pessoas estava acostumada.
O efeito geral é que o Smalltalk obteve uma reputação (um tanto merecida) por ser difícil de aprender; leva bastante tempo e esforço para se tornar um programador Smalltalk realmente proficiente. Ruby e Python são muito mais fáceis de aprender e atualizar novos programadores.
Historicamente, as implementações convencionais do Smalltalk eram muito caras e precisavam de hardware exótico para serem executadas, como pode ser visto neste post do net.lang.st80 de 1983 . O Windows 3.1, NT e 95 e OS / 2 foram os primeiros sistemas operacionais de mercado de massa no hardware convencional, capazes de suportar uma implementação Smalltalk com uma integração decente do sistema nativo. Anteriormente, o Mac ou o hardware da estação de trabalho eram as plataformas mais baratas capazes de executar o Smalltalk de maneira eficaz. Algumas implementações (particularmente a Digitalk) suportaram muito bem os sistemas operacionais de PC e conseguiram ganhar alguma tração.
No entanto, o OS / 2 nunca foi tão bem-sucedido e o Windows não conseguiu aceitação convencional até meados da década de 90. Infelizmente, isso coincidiu com o surgimento da Web como plataforma e um grande impulso de marketing por trás do Java. O Java conquistou a maior parte da atenção na última parte da década de 1990, tornando o Smalltalk um pouco desinteressado.
Ruby e Python funcionam em uma cadeia de ferramentas mais convencional e não estão fortemente acoplados a um ambiente de desenvolvimento específico. Embora os IDEs do Smalltalk que usei sejam bons o suficiente, eu uso o PythonWin para desenvolvimento em Python, em grande parte porque ele tem um bom editor com destaque de sintaxe e não fica sob os pés.
No entanto, o Smalltalk foi projetado para ser usado com um IDE (na verdade, o Smalltalk era o IDE gráfico original) e ainda possui alguns recursos interessantes não replicados por outros sistemas. Testar o código com destaque e 'Mostrar' ainda é um recurso muito bom que eu nunca vi em um IDE Python, embora não possa falar por Ruby.
O Smalltalk chegou um pouco tarde à festa de aplicativos da web. Os primeiros esforços, como o VisualWave, nunca foram muito bem-sucedidos e só depois que a Seaside foi lançada, uma estrutura da Web decente conseguiu aceitação nos círculos do Smalltalk. Enquanto isso, o Java EE teve um ciclo de vida de aceitação completo, começando com fanboys entusiasmados, promovendo-o e finalmente ficando entediado e migrando para Ruby; -}
Ironicamente, o Seaside está começando a ter um pouco de atenção entre os conhecedores, para que possamos descobrir que o Smalltalk monta esse retorne à popularidade.
Dito isto, o Smalltalk é um sistema muito bom depois que você decide como conduzi-lo.
fonte
Quando saio de casa de manhã para ir trabalhar, muitas vezes luto com a decisão de virar à esquerda ou à direita no caminho (moro no meio de uma rua). De qualquer maneira me levará ao meu destino. Uma maneira me leva à estrada que, dependendo do trânsito, provavelmente me levará ao escritório mais rapidamente. Eu dirijo muito rápido por pelo menos parte do caminho e tenho uma boa chance de ver uma garota bonita ou duas a caminho do trabalho :-)
A outra maneira me permite viajar por uma estrada de volta muito encantadora e ventosa, com cobertura completa de árvores. Esse caminho é bastante agradável e as duas abordagens são definitivamente as mais divertidas, embora isso signifique que chegarei ao escritório mais tarde do que se tivesse tomado a estrada. Cada caminho tem seus méritos. Nos dias em que estou com muita pressa, geralmente vou pegar a estrada, embora possa entrar no trânsito e também aumentar minhas chances de sofrer um acidente (se não tomar cuidado com a pressa). Outros dias, posso escolher o caminho arborizado e seguir em frente, apreciando a paisagem e perceber que estou atrasado. Posso tentar acelerar, aumentando minhas chances de conseguir uma multa ou causar um acidente.
Nenhum dos dois lados é melhor que o outro. Cada um tem seus benefícios e riscos, e cada um me levará ao meu objetivo.
fonte
Eu acho que sua pergunta está um pouco errada. Você não deve escolher, deve aprender os dois!
Se você realmente estiver em uma posição em que poderá escolher a próxima estrutura (vm, infraestrutura), precisará decidir o que usar e poderá fazer uma pergunta específica com prós e contras da perspectiva do que seu aplicativo pretende fazer.
Eu usei smalltalk (adoro) e ruby (adoro).
Em casa ou no projeto de código aberto, posso usar todos os idiomas de que gosto, mas ao fazer o trabalho tenho que adotar.
Comecei a usar ruby (no trabalho) porque precisávamos de uma linguagem de script que se comportasse mais ou menos igualmente sob solaris, linux e windows (98,2000, xp). Ruby era na época desconhecido para o joe médio e não existiam trilhos. Mas foi fácil vender para todos os envolvidos.
(Por que não python? A verdade? Uma vez, passo uma semana caçando um bug que aconteceu quando um terminal converteu meu espaço em uma guia e a intenção ficou confusa).
Então as pessoas começaram a codificar cada vez mais em rubi porque era muito relaxante, desfrutando e não uma nuvem no céu.
Paul Graham resume tudo
e
E quando estávamos na terra Lisp, tente substituir o LISP por smalltalk
e
fonte
Eu diria o contrário: a sintaxe Smalltalk é uma das sintaxes mais simples e poderosas da linguagem de programação.
fonte
Giles Bowkett
fonte
Adivinha quem disse isso? (a citação é próxima, talvez não exata): "Eu sempre pensei que o Smalltalk venceria o Java. Só não sabia se seria chamado de 'Ruby' quando o fizesse".
Drum roll ....
...
A resposta é ... Kent Beck
fonte
Stephane Ducasse tem ótimos livros sobre Smalltalk disponíveis aqui:
http://stephane.ducasse.free.fr/FreeBooks.html
portanto, embora a comunidade Smalltalk não seja tão prolífica quanto as comunidades Ruby e Rails, ainda há uma grande ajuda por aí.
fonte
o que Ruby tem que Smalltalk não?
Eu acho que seu ponto de vista é bem aceito. Como um amigo disse uma vez, Ruby pode ser "vinho velho em uma nova garrafa" em relação ao Smalltalk. Mas às vezes a nova garrafa é importante. Um vinho deve estar no lugar certo, na hora certa.
fonte
Me bate. Passei um ano conferindo Ruby e fazendo alguns projetos pequenos para ver como eu gostava. Eu acho que sou um fanático do Smalltalk porque toda vez que eu me sentava para trabalhar com Ruby, suspirava e pensava "eu realmente prefiro fazer isso no Smalltalk". Finalmente, cedi e voltei para Smalltalk. Agora estou mais feliz. Mais feliz é melhor.
O que, é claro, sugere a pergunta "Por quê?". Em nenhuma ordem particular:
Por outro lado, isso pode ser apenas as divagações de um cara que está programando desde os dias em que os mainframes governavam a Terra, tivemos que caminhar oito quilômetros para lidar com tempestades de neve ofuscantes, subindo os dois sentidos e computadores usavam rosquinhas para memória. Não tenho nada contra Ruby / Java / C / C ++ /, todos são úteis no contexto, mas me dê Smalltalk ou me dê ... bem, talvez eu deva aprender Lisp ou Scheme ou ... :-)
fonte
Smalltalk: as pessoas encaminham ifTrue: [think] ifFalse: [sem pensar]
Ruby: as pessoas pensam para a frente, a menos que pensem para trás
1) O fluxo de controle semelhante ao RPN do Smalltalk por mensagens é como o Lisp - é regular e legal, mas deixa as pessoas estranhas.
2) Ruby permite que as pessoas escrevam código usando a maneira idiomática das pessoas - faça blá, a menos que haja um motivo para não fazê -lo.
update reescreveu o exemplo Smalltalk para realmente ser um código mais legal.
fonte
Ruby é o idioma atual do buzz. É mais fácil comercializar software construído com ele agora do que uma linguagem desenvolvida nos anos 70.
fonte
Comunidade! Ruby e especialmente Rails tem uma comunidade tão boa. Ao brincar com o smalltalk, parecia que não havia tantas transmissões de tela, artigos, postagens de blog etc. escritos sobre o Smalltalk.
fonte
Você respondeu à pergunta em sua primeira linha: "Ruby está se tornando popular"
Eu diria se um idioma é superior a outro é irrelevante. Como exemplo, o PHP pode não ser o "melhor" de todos os tempos, mas eu ainda consideraria usá-lo no Ruby on Rails (uma ferramenta "melhor" para criar sites) porque é muito difundido.
Basicamente, prós e contras específicos de um idioma são muito menos importantes do que tudo que o rodeia - a comunidade.
fonte
Ruby (ou qualquer outra língua) é mais popular que Smalltalk (ou qualquer outra língua) porque vivemos em um universo caótico. A saber:
Enquanto os idiomas são semelhantes nos recursos OO, o assassino do Smalltalk vantagem é o ambiente ao vivo, open ( 'imagem' do muito mal compreendido). Depois de verificar este exemplo de programação no Smalltalk , o debate terminou.
fonte
Para mim, não se trata tanto do que Ruby tem, mas do que Ruby não tem. E o que ele não possui é a necessidade de uma VM e um ambiente completo.
Smalltalk é ótimo - é onde aprendi conceitos de OO, mas, para facilitar o uso, busco Ruby. Eu posso escrever código Ruby no meu editor favorito e executá-lo na linha de comando.
Então, para mim, é isso que eu escolho Ruby em vez de Smalltalk.
fonte
Acho que todo mundo que trabalha com Ruby há algum tempo reconhece sua profunda dívida com o Smalltalk. Como uma dessas pessoas, o que eu gosto no Ruby sobre o Smalltalk? Eu acho que, do ponto de vista da linguagem, é o açúcar. O Ruby é deliberadamente uma linguagem com muita sintaxe e açúcar, enquanto o Smalltalk é uma linguagem com um mínimo de sintaxe. Ruby é essencialmente o modelo de objeto Smalltalk com açúcar de sintaxe Perlish. Por acaso, gosto do açúcar e acho que torna a programação mais divertida.
fonte
Você pode encontrar um emprego facilmente fazendo Ruby.Embora eu realmente goste do Smalltalk, é praticamente impossível entrar no nicho do Smalltalk. Existe uma maneira de contornar isso, mas se você não entrou quando era popular, é praticamente impossível agora.
Todas as outras razões empalidecem na insignificância, porque você precisa gastar bastante tempo, concentrado no trabalho real para aprender um idioma adequadamente. Se você não é rico de forma independente, a melhor maneira de fazer isso é a exposição a ele no trabalho.
fonte
Porque as distribuições do Smalltalk foram cotadas em múltiplos de US $ 1000 USD, enquanto o Ruby é gratuito.
fonte
Ruby é para Smalltalk como algarismos arábicos são para romanos. Mesma matemática, sintaxe mais fácil.
fonte
Eu fiz um pouco de Smalltalk - o IDE é uma coisa que me lembro - o Ruby tem um bom suporte para IDE?
fonte
Use Ruby porque pode ter pernas de negócios, o Smalltalk não.
Eu posso te dizer por experiência pessoal. Ainda usando Smalltalk, adore e usei alguns sabores. Embora o Smalltalk seja um ótimo idioma e seja tudo o que você mencionou, você provavelmente não convencerá o CIO / CTO médio a usar o Smalltalk em um novo projeto. Claro, você pode até ter dificuldade em convencer um CIO / CTO conservador a usar Ruby. No final, você deve ter muito cuidado se desejar suporte comercial de longo prazo e a capacidade de encontrar funcionários externos que possam dar suporte aos seus sistemas no futuro. Como exemplo, o Smalltalk foi realmente muito importante no início dos anos 90 e a IBM investiu pesadamente nele no final dos anos 90. Para o IBM Smalltalk, seria o próximo idioma para todos os aplicativos de negócios. A IBM colocou o Smalltalk em tudo, incluindo seus sistemas de mainframe. Java se tornou popular, assumiu o mercado, e Smalltalk se tornou um player de nicho. Há mais de um ano, a IBM lançou o idioma (seu termo é pôr do sol). Além disso, dê uma olhada no histórico. ParkPlace e Digitalk, onde os primeiros grandes players comerciais na arena de Smalltalk, eles se fundiram e depois faliram.
fonte
Eu amo Smalltalk e Ruby - mas descobri que Ruby é mais aplicável ao que faço diariamente e está mais próximo do meu coração (na prática). O que Ruby oferece que o Smalltalk não oferece?
Alguns mencionaram gst (GNU Smalltalk); os problemas ainda se mantêm.
fonte
Use o que o torna mais poderoso e mais rápido para vencer seu desafio.
Para nós , um pouco de estrutura interna, que construímos em alto mar é realmente nossa superpotência.
Eu amo a comunidade RoR, ela tem a atitude certa. Isso é muito, muito valioso. Mas, ao mesmo tempo, tecnologicamente, a beira-mar o fortalece contra problemas mais complicados.
Você pode criar ótimos aplicativos da Web à beira-mar usando coisas de código aberto.
dabbledb era um sartup à beira-mar e, ei! A Avi o vendeu para o twitter em junho deste ano!
Eu digo que você não precisa esperar que outras pessoas aprovem sua iniciativa.
Apenas vá em frente. Faça isso. Mostre-nos que funciona.
Você não está sozinho. Estamos no mesmo barco.
fonte
Perspectiva interessante de Robert Martin (da RailsConf 2009): "O que o Killed Smalltalk também poderia matar o Ruby"
fonte
Eu acho que parte do problema é o ambiente de desenvolvimento é o tempo de execução. Isso dá muito poder, mas também apresenta uma curva de aprendizado maior.
Aqui está um tutorial Olá, mundo.
Isso é muito diferente de outros idiomas em que eu só preciso saber como abrir um editor de texto e copiar e colar texto, clicar em salvar e executar um compilador. Eu preciso saber como usar o ambiente. Esse tutorial nem me mostra como criar um programa básico (que provavelmente é mais uma falha desse tutorial) que eu posso executar.
Definitivamente, há um custo mais alto de apenas começar as coisas do que a maioria dos outros idiomas.
A maioria dos idiomas possui um código atraente que eles podem exibir. Eu não vi isso com Smalltalk. Eu também acho que há algum estigma no Smalltalk porque ele existe há tanto tempo e ainda é relativamente obscuro.
fonte
Eu acho que a maior diferença é que Ruby é muito mais parecido com o perl em termos de USE. O Smalltalk nunca se posicionou nas linguagens de "script".
A VM é muito legal e espero que o ruby tenha algo semelhante a ele, para que possamos tratar tudo no nosso sistema operacional que está escrito em ruby como objeto no espaço da memória; no entanto, até então, eu simplesmente aprecio a sintaxe curta e concisa do Ruby, a capacidade de apenas escreva um pequeno script e reutilize-o mais tarde. Ruby tem todas as vantagens do perl e o OOP é muito mais parecido com o smalltalk do que o hack do OOP do perl.
fonte
Eu iria além da resposta de Jonke e diria que agora há um grande número de idiomas que têm uma comunidade muito forte, quase o suficiente para todos os gostos, e um subconjunto deles tem reconhecimento mainstream (ou seja, seu gerente permitirá que você os use em trabalho também).
É fácil aprender o básico de um idioma, mas para usá-lo efetivamente, você precisa investir tempo suficiente para aprender a plataforma e as ferramentas, bem como a sintaxe e os idiomas. IIRC, McConnell afirma que leva cerca de três anos para se tornar verdadeiramente proficiente.
Dadas essas coisas, é difícil justificar gastar muito tempo em idiomas como LISP e Smalltalk, embora eles sejam interessantes e talvez educacionais.
fonte
Como resposta tardia à discussão, o principal problema do Smalltalk e do Lisp é que você não pode executá-los com CGI ou FastCGI em hospedagem compartilhada.
As massas não lavadas nunca as usarão se precisarem de VPS ou servidores dedicados para usá-las. O IMHO Seaside é superior a quase tudo, mas será executado no Dreamhost ou no Webfaction?
fonte