Domanda

Le mie domande sono semplici!

  1. Inizieresti a imparare Smalltalk se avessi il tempo? Perché? Perché no?
  2. Conosci già Smalltalk? Perché consiglieresti Smalltalk? Perché no?

Personalmente sono un programmatore di Ruby on Rails e mi piace molto. Tuttavia, sto pensando a Smalltalk perché ho letto vari blog e alcune persone chiamano Ruby qualcosa come "Smalltalk Light". Il secondo motivo per cui sono interessato a Smalltalk è Seaside .

Forse qualcuno ha già fatto la stessa transizione prima?

EDIT: In realtà, ciò che mi ha entusiasmato maggiormente di Smalltalk / Seaside è il seguente episodio di WebDevRadio: Episodio 52: Randal Schwartz on Seaside (tra le altre cose)

È stato utile?

Soluzione

Se ti piace Ruby, probabilmente ti piacerà Smalltalk. IIRC Seaside è stato portato su Gemstone VM, che fa parte del loro Gemstone / S OODBMS. Questo ha un supporto thread molto migliore rispetto a Ruby, quindi è un back-end migliore per un sistema ad alto volume. Questo potrebbe essere un buon motivo per dare un'occhiata da vicino.

Ragioni per imparare Smalltalk:

  • È un ambiente di programmazione davvero bello. Una volta che hai la testa intorno (tende a essere un po 'uno shock culturale per le persone abituate a C ++ o Java) scoprirai che è davvero un buon ambiente in cui lavorare. Anche un piccolo chiacchierone davvero schifoso come il I vecchi di Digitalk che ho usato è un sistema straordinariamente piacevole da usare. Molti vecchi tipi di guru di XP e OO come Kent Beck e Martin Fowler si sono tagliati i denti su Smalltalk nel corso della giornata e occasionalmente può essere ascoltato desiderando i bei vecchi tempi in pubblico (Grazie a Frank Shearer per la citazione, +1) - Lo sviluppo agile ha avuto origine su questa piattaforma.

  • È una delle piattaforme di sviluppo più produttive della storia.

  • Esistono diverse implementazioni mature e c'è una base di codice sorprendentemente grande là fuori. Ad un certo punto è diventato abbastanza alla moda negli ambienti dei mercati finanziari in cui la produttività degli sviluppatori e il time-to-market sono piuttosto importanti. Fino alla metà degli anni '90 era più o meno l'unico gioco in città (con la possibile eccezione di LISP) se si voleva un linguaggio di alto livello supportato commercialmente adatto allo sviluppo di applicazioni.

  • La distribuzione è semplice: basta rilasciare il file immagine nella directory appropriata.

  • Non proprio un motivo, ma la Gang of Four Book usa Smalltalk per alcuni dei loro esempi.

Ragioni per non imparare Smalltalk:

  • È una specie di mercato di nicchia. Potresti avere difficoltà a trovare lavoro. Tuttavia, se stai producendo una sorta di .com dove possiedi i server questo potrebbe non essere un problema.

  • È considerato da molti un sistema legacy. Ci sono relativamente pochi nuovi sviluppi sulla piattaforma (sebbene Seaside stia guidando un po 'un rinascimento).

  • Tende a non giocare bene con i tradizionali sistemi di controllo del codice sorgente (almeno all'inizio della metà degli anni '90 quando l'ho usato). Questo può o non può ancora essere il caso.

  • È piuttosto insulare e ama giocare da solo. Python o Ruby sono progettati per l'integrazione da zero e tendono ad essere più promiscui e quindi più facili da integrare con software di terze parti. Tuttavia, vari altri sistemi più tradizionali soffrono di questo tipo di insularità in misura maggiore o minore e questo non sembra ostacolare molto il loro utilizzo.

Altri suggerimenti

Bene, dato che mi hai menzionato per nome, sento che dovrei entrare.

Come ho detto in quell'intervista sul podcast e come ho ripetutamente dimostrato nel mio blog su http: // MethodsAndMessages. vox.com/ , questo è " l'anno della chiacchierata " ;. E dopo aver svolto il patrocinio di Smalltalk negli ultimi dieci mesi, vedo che sta davvero accadendo. Sempre più clienti si rivolgono a Smalltalk e Seaside e i distributori Smalltalk stanno tutti lavorando sodo per catturare questo nuovo flusso di attenzione. Si stanno pianificando conferenze Smalltalk più grandi. Altre offerte di lavoro vengono inviate. Altri post sul blog sono in fase di realizzazione.

Se ti rivolgi a Smalltalk oggi, non sei solo. Ci sono molti altri che sono anche là fuori.

Modifica

Bene, un certo numero di anni dopo, ora raccomando invece Dart . È una grande lingua originata da Google ma ora di proprietà di un comitato ECMA. Funziona sul lato server in stile node.js, ma anche sul lato client nei browser moderni eseguendo la traspilazione in JavaScript. Un sacco di buoni libri, blog, canali di aiuto, supporto IDE, pastebin pubblica dal vivo . Penso che abbia sicuramente le gambe ... abbastanza da scrivere articoli per insegnare sul posto o online, e sono abbastanza sicuro che ci sia un libro o due nelle mie opere. E Gilad Bracha, un vecchio Smalltalker, contribuisce in modo determinante al design, quindi c'è molto Smalltalk in Dart.

Smalltalk è una buona lingua da imparare e la cosa grandiosa è che ci vuole solo un giorno per farlo. È molto più di una semplice lingua accademica. Le persone stanno costruendo enormi applicazioni scalabili e replicabili gestendo miliardi di dollari. Non ne parlano molto. Vedi, ad esempio, GemStone e Orient Overseas Container Lines: Un caso di studio sull'industria navale .

Seaside è un buon motivo per imparare Smalltalk, ma non credo che troverai ordini di grandezza migliori di Rails.

La cosa che mi ha convinto era GemStone. Mi piace molto Gemstone's GLASS (GemStone, Linux, Apache, Smalltalk, Seaside). La parte killer di questo è GemStone, che gestisce tutta la persistenza degli oggetti per te principalmente senza che tu ci pensi. Vedendo alcune delle loro demo e ascoltando ciò che le persone stanno facendo con GemStone resettano la mia idea di quale "grande applicazione" significava.

La parte che mi infastidisce di più su Rails è la mappatura relazionale degli oggetti. Non è niente contro Ruby perché fa schifo altrettanto forte in GLORP (che gestisce ActiveRecord per Smalltalk), o Perl, o qualsiasi altra cosa. Mappare oggetti su tabelle di database è solo doloroso. Con GemStone, il pensiero sul database scompare, quindi scompare anche il lavoro con il database. È come se un'enorme pietra (o una truppa di scimmie) mi fosse tolta la schiena.

> non è stato possibile trovare un ambiente di sviluppo Smalltalk che non sia costato armi e gambe

Google - Smalltalk gratuito

Cincom Smalltalk, Squeak, GNU Smalltalk

Imparare Smalltalk ti darà una base nello sviluppo di software orientato agli oggetti dal punto di vista dell'uomo che ha inventato OO (Alan Kay). L'idea di un ambiente a finestre sovrapposte è nata da Smalltalk.

Un ostacolo all'apprendimento di Smalltalk è che si tratta di un sistema di passaggio di messaggi con una strana sintassi per il controllo del flusso come:

i < 60
   ifTrue: [ self walk ]

Ha una libreria di classi molto matura che ha una coerenza che non ho visto troppi posti. La biblioteca di classe in tutti gli ambienti (anche commerciali Smalltalks) ha una fonte disponibile che ti permette di imparare dai maestri della lingua. Durante la programmazione di Smalltalk, faccio sempre la domanda come viene fatto nell'ambiente.

Smalltalk è generalmente implementato in un'immagine che è un ambiente live per tutti gli oggetti nel tuo sistema.

Il debugger interattivo separa davvero Smalltalk da Ruby.

Seaside è il framework di sviluppo web e ha dato a Smalltalk un nuovo riflettore. Si tratta di un ambiente basato sulla continuazione che consente il debug intra-hit e un'esperienza di sviluppo di tipo Rich Client senza problemi (il flusso di applicazioni più elevato può essere progettato in un unico metodo). La sua integrazione con script.aculo.us è stata fatta in modo tale da poter essere facilmente richiamata da Smalltalk.

Nigel, una citazione che ho è questa:

Anche se ormai è passato molto tempo da quando ho fatto qualcosa con esso, ho nominato Smalltalk, non ho ancora trovato nulla di simile per essere in grado di trasferire pensieri nel codice del computer. Non è solo la lingua: è il meraviglioso ambiente del browser, le librerie e la cultura di scrivere codice chiaro e ben progettato con la stessa rapidità con cui qualsiasi altra cosa può estrarre gli spaghetti. Quando i partecipanti a JavaOne stavano esaltando il modo in cui Java era molto più produttivo di ogni altra cosa, avevo bisogno di un sacchetto di carta marrone. Vabbè, torniamo a sistemare i miei percorsi di classe ... - Martin Fowler (Software Development Magazine, gennaio 2001)

L'ho trovato qui .

Consiglio a tutti di imparare Lisp (Scheme) o Smalltalk.

Smalltalks ha IDE meravigliosi che non vuoi perdere una volta superato lo shock culturale. E sì, ce ne sono più di uno libero: Squeak, Dolphin, Smalltalk / X e Visualworks (non commerciale).

Tuttavia, Lisp potrebbe essere ancora più pulito nelle sue basi matematiche.

Per quanto riguarda

PS: in realtà consiglio di imparare entrambi!

Non conosco Ruby ..

Smalltalk è un linguaggio puro OO. Se senti il ??bisogno di capire veramente OO, e non solo l'OO simulato dei più popolari linguaggi 'OO' (come C ++, Java, ecc.), Allora ti consiglio di giocare con smalltalk.

In smalltalk tutto è un oggetto, con attributi, comportamento e meta. Nelle simulazioni hai tipi di dati che usi nei tuoi oggetti.

Direi che giocaci, ne trarrai beneficio solo.

Sarei in disaccordo con il poster che ritiene che non utilizzeresti Smalltalk per app di grandi dimensioni & # 8211; che è esattamente dove brilla. Ma in meno di una settimana ho creato anche prototipi di app abbastanza groovy (nota in minuscolo).

Ho imparato OO in ST a partire dal 92, incredibilmente felice di averlo fatto. Mi ha dato un vero background in OO. Pensare in classe. Nessun tipo ST ha una vera enfasi sulla messaggistica. Se vuoi sapere qualcosa, invia un oggetto a un messaggio e ottieni una risposta. IMHO, l'ethos e l'IDE ti incoraggiano davvero a fare la cosa giusta con il tuo accoppiamento e la tua coesione.

Nel mio lavoro quotidiano in Java, sono bloccato con file, generici, IDE come eclissi che sono ordini di grandezza meno produttivi di qualsiasi IDE ST. Stavo usando ST l'unica volta che ho terminato uno sviluppo prima del previsto. In effetti è stato così produttivo, e abbiamo avuto così tanto riutilizzo che ho dovuto trasferirmi in un altro progetto, dato che non avevo niente da fare! (Ok, forse avrei potuto passare del tempo ad imparare a stimare ...)

Scarica squeak, trova un buon libro e gioca. L'unico aspetto negativo è che se il tuo concerto diurno utilizza Java o C #, finirai per desiderare di poter usare ST. Dovresti tornare a casa prima.

Chris Brooks

Sono totalmente nei tuoi panni. Sto usando RoR e sto esaminando la terra di Smalltalk. Ecco alcuni pro e amp; contro trovo importante:

Pro:

  • Mature & amp; ambiente stabile
  • Ciclo di sviluppo rapido
  • Ti fa pensare di più e scrivere di meno

Contro:

  • Richiede un pensiero diverso
  • Non l'ho ancora capito abbastanza

È abbastanza divertente sapere come ho conosciuto Smalltalk. È stata questa una cosa che è emersa dai risultati di Google durante la ricerca di materiale Lisp ed Erlang. Un giorno l'ho verificato e sono rimasto sorpreso dal piacevole ambiente Windows. Pochi istanti dopo ho trovato il framework Aida / Web. Mi sono appassionato e ho iniziato a studiare Smalltalk attraverso lo sviluppo web con questo framework.

Ancora non del tutto lì, ma è così dannatamente interessante che non riesco proprio a stare fermo ... :-) Mi sto divertendo di nuovo.

Non inizierei ad impararlo se avessi il tempo. Perchè no? Perché sarebbe più produttivo e redditizio dal punto di vista finanziario imparare C # o Java.

D'altra parte, se sei un hobbista e ti piacerebbe fare uno scavo archeologico, allora suggerirei di passare un po 'di tempo a guardare il What, When, Why e how of smalltalk ricercando Alan Kay. Storia affascinante e una persona incredibile (dopo tutto, ha vinto il Turning Award). Quindi forse gioca un po 'con lo squittio per avere un'idea della lingua. Dopo ciò, potresti avere un rispetto / una comprensione recentemente scoperti di blocchi, chiusure e principi orientati agli oggetti.

Conosco e utilizzo Smalltalk, ce l'ho da circa 15 anni, ancora mantenendolo e non consiglierei Smalltalk ad un amico. Perchè no? L'occupazione è una buona cosa da avere e continuare a ottenere. Anche se puoi imparare molto da Smalltalk, non puoi facilmente trasformarlo in un impiego proficuo in questi tempi.

Inoltre, sembravi entusiasta di Seaside e avrei assunto la partnership Seaside / GemStone. Ho usato GemStone per un po 'di tempo e i due insieme sono molto interessanti. Spero che possano ottenere la quota di mercato e lo slancio necessari per avere successo.

Non farlo! Se inizi davvero ad impararlo, potresti non voler più programmare qualcos'altro.

Questo potrebbe non essere vero, se sei un programmatore lisp.

Mi è stato insegnato Smalltalk in uno dei primi corsi di programmazione Object-Orient di livello universitario (circa 1988). L'insegnante ha pensato che il modo migliore per iniziare fosse un "puro" OO langauge, prima di passare a uno più alla moda (abbiamo fatto un po 'di C ++ alla fine del semestre).

A questo proposito, è ancora meglio iniziare con OO puro, anche se in questi giorni abbiamo Java & amp; C #, entrambi i quali sono "quasi puri" OO - abbastanza vicino che puoi ottenere ignorando le loro caratteristiche non OO e limitandoti al sottoinsieme Pure-OO dei linguaggi.

Se vuoi una migliore comprensione della programmazione estrema (e persino di Scrum) direi .

Perché i programmatori Java impazienti devono imparare Smalltalk:

http: //www.dafydd. net / archive / 2010 / why-Smalltalk-isnt-just-another-lingua /

Sono un ingegnere del software da diversi anni. Ho sentito alcune persone far apparire Smalltalk alcune volte, e certamente Smalltalk è in circolazione da circa il 1980, ma è una di quelle lingue che non sembravano mai entrare nel mainstream del software. Un po 'come gli obiettivi C, CLIP, PL / I, ecc. - qualcosa di cui potresti aver sentito parlare, ma qualcosa in cui la maggior parte della gente non ha mai programmato.

Probabilmente non mi prenderei il tempo per imparare Smalltalk se non avessi bisogno di un particolare lavoro. Ho esaminato alcuni tutorial ed esempi Smalltalk per alcuni anni, e sembra che abbia alcuni chiari vantaggi per alcuni aspetti della programmazione OO (come il concetto di messaggio sembra interessante). Ma purtroppo non è mainstream e non sembra guadagnare molto slancio.

Assolutamente, impara Smalltalk! Questo è il 2015 e Smalltalk è di nuovo in aumento, grazie a Pharo . Pharo è GRATUITO. Pharo si sta evolvendo rapidamente in un potente strumento aziendale. Alla versione 4.0, e presto in 5.0, è maturato moltissimo in soli quattro anni!

Poi c'è Amber , che è Smalltalk per il web. È anche GRATUITO e in rapida evoluzione.

Nonostante La reputazione di Smalltalk , questo è non Smalltalk di tuo padre. Modern Smallalk è eccitante e promettente.

È vero che i lavori Smalltalk non sono (ancora) abbondanti. Ma se un numero sufficiente di voi si aggrega a una nuova ondata di Smalltalker, il settore si adatterà ad esso e vedremo una più ampia adozione di Smalltalk negli affari. La domanda è: hai la visione?

Questo thread è diventato molto attuale per me. Sto pianificando una migrazione del software a un'applicazione Web. È un software basato su database. Sto verificando soprattutto le alternative 1) Rotaie 2) Mare

Se riesco a ottenere le cifre per Gemstone / S come Database, lo prenderò in considerazione. Quindi per me significa che devo imparare Smalltalk (meglio) di prima. Perché potrebbe essere che sarà il mio lavoro per i prossimi 15 anni. Dovresti (e non dovresti) lavorare con software che non ti piacciono per così tanto tempo ;-). Ho l'impressione che Gemstone / S sia uno dei "killer" applicazioni. Ma la persistenza degli oggetti è ancora un campo molto difficile ....

1) Sì! È sempre bello imparare una lingua. Se hai intenzione di imparare una lingua, rendila una lingua potente e influente che può essere appresa facilmente e rapidamente.

Smalltalk rimane un linguaggio e un ambiente preminenti per l'apprendimento dei concetti di OO.

Sono tutti gli oggetti, fino in fondo. Questo rende un approccio veramente coerente al lavoro.

I numeri interi sono istanze di Numero intero. Le stringhe sono una raccolta di oggetti carattere. Le classi sono oggetti di istanza singleton per la classe che definiscono.

Le strutture di controllo funzionano inviando i messaggi get alle istanze di Class Boolean.

Anche i metodi anonimi (blocchi di codice, ovvero blocchi) sono oggetti.

Tutto viene fatto inviando un messaggio a un oggetto. La sintassi può essere inserita su una cartolina.

La chiarezza dei concetti e la loro implementazione in Smalltalk significano che puoi sviluppare modi di pensare che trasferiscono direttamente in Java, Ruby e C #. Mi aspetto che sia vero anche per Python.

È così utile per chiarire i concetti che una delle principali università del Regno Unito ha utilizzato Smalltalk per formare 5.000 persone all'anno nel calcolo orientato agli oggetti.

Squeak 5, è appena stato rilasciato. Ha ottenuto importanti aumenti delle prestazioni dal suo nuovo Cog / Spur VM, che presenta funzionalità di garbage collection progressiva.

Pharo 4 ha un delizioso tema desktop dall'aspetto pulito. La prossima versione, Pharo 5, uscirà presto. Passerà all'utilizzo della VM Cog / Spur, avrà circa 5.000 classi nella versione e ulteriori pacchetti di classi sono prontamente disponibili dalla rete tramite lo strumento Browser di configurazione.

Squeak 5 è performante anche su Raspberry Pis di prima generazione ed è quasi il 50% più veloce sul nuovo Raspberry Pi zero da $ 5. $ 99 ti acquistano un Raspberry Pi 2, schermo e custodia - con un IDE maturo e completo di tutte le funzionalità.

Sono in corso ricerche all'avanguardia su sistemi OO distribuiti coordinati in Smalltalk (ad es. Naiad e Spoon).

Alcuni dei database aziendali più grandi del mondo sono gestiti su Smalltalk, incluso il monitoraggio del 60% dei container di spedizione del mondo e i sistemi di trading nella banca più grande del mondo.

Puoi usare Smalltalk come una sorta di CoffeeScript superpotente, scrivendo in Amber Smalltalk e traspilando in JavaScript, in esecuzione nel browser.

Squeak, Pharo e Amber sono tutti linguaggi e ambienti gratuiti, open source e con licenza aperta.

Squeak e Pharo forniscono funzionalità di scrittura in una sola volta, eseguono ovunque per MacOS, Windows e Linux. (Forse anche RiscOS).

Dolphin Smalltalk è mirato saldamente all'aspetto nativo di Windows e ti consente di compilare .exe chiusi del tuo lavoro finito per la distribuzione agli utenti finali. L'ulteriore sviluppo di Dolphin da parte del venditore si è interrotto, ma è completamente funzionale e, come tutti i Smalltalks, è stato progettato per essere ampiamente estensibile. (Ho già detto che Pharo ora ha 5.000 classi, rispetto alle 3000 di Squeak? Pharo è un fork di Squeak 3.9)

** Esiste una guida pratica per l'installazione e l'avvio di Squeak, Amber, Pharo, Cuis e Dolphin su: ** http: //beginningtosmalltalk.blogspot .it / 2015/11 / how-to-get-Smalltalk-up-and-running.html

Il framework web Seaside funziona su Squeak e su Pharo. È uno strumento maturo meraviglioso, così come il più tradizionale framework AidaWeb.

VisualAge, VisualWorks e Gemstone forniscono tutti sistemi robusti di livello aziendale. Gemstone fornisce un database oggetti scalabile all'infinito con transazioni e persistenza.

2) Sì, lo uso già.

L'ho imparato tramite la Open University ed è stato immediatamente produttivo in Ruby (una copia del libro Pickaxe e il riferimento della biblioteca al mio fianco). Mi ha aiutato enormemente con Java e con Xerox Moo-code.

Sono appena tornato su di esso per scrivere app per controllare la gestione e la distribuzione di app mobili multipiattaforma reattive.

Mi aspetto che presto riscriverò anche le mie app mobili JavaScript usando Amber.

Non so davvero cosa stai cercando.

Se stai cercando una lingua diversa in cui scrivere, penso che dipenderebbe fortemente dalle librerie disponibili. Non conosco né Ruby né Smalltalk, ma sembra probabile che il modo più efficace per scrivere Ruby su applicazioni di Rails potrebbe non essere Smalltalk.

Se stai cercando di imparare le idee dietro Ruby, questa potrebbe essere una mossa molto buona. Non ho nulla di quantitativo, ma mi sono sempre sentito meglio nell'usare strumenti (come i sistemi linguistici) se avessi saputo qualcosa di più dei semplici strumenti, se avessi sviluppato le idee o il loro funzionamento.

Se vuoi imparare diversi tipi di linguaggi orientati agli oggetti, potresti voler imparare Smalltalk (se differisce significativamente da Ruby), qualcosa come Java o C ++ e forse anche il Common Lisp Object System.

Se vuoi semplicemente imparare qualcosa di diverso, Smalltalk potrebbe essere una buona scelta. Suggerirei anche Common Lisp e altre persone avranno senza dubbio altri suggerimenti (puoi ottenere un buon sistema Forth al giorno d'oggi?).

Sì, mi interessa. Ho provato a iniziare già una volta, ma non sono riuscito a trovare un ambiente di sviluppo Smalltalk che non sia costato sia le braccia che una gamba.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top