Migliore risposta
Storia lunga.
La versione TL; DR è la seguente dal mio punto di vista:
- Si possono leggere i libri originali di Smalltalk e trarne valore quando si usa Pharo, quindi cè sicuramente una solida eredità Smalltalk.
- Sul fronte degli strumenti, cè sono diversi progressi in Pharo che lo rendono piuttosto unico e diverso da Smalltalk 80. Ad esempio:
- GToolkit, con ispettori super potenti
- Spotter, che consente un modo davvero interessante di accedere agli elementi di il sistema ecc.
- Spec e Bloc per altri modi di eseguire linterfaccia utente rispetto a MVC e Morphic
- Pulizie e aggiunte ai pacchetti standard di Squeak
- Zinc, NeoJson, STON,… tutti provenivano dalla comunità Pharo
- Roassal2, per le visualizzazioni, anchessi provenienti dalla comunità Pharo
- La VM, che ora è un comune OpenSmalltalk / opensmalltalk-vm lo sforzo con specifiche aree Pharo è più veloce, w con un JIT migliore e un altro set di bytecode. La gestione della memoria con linoltro del puntatore fa diventare: molto più veloce. Seleziona Tuning the Pharo Garbage Collector , seleziona Riepilogo in 7 punti del gestore della memoria Spur , beh, controlla tutto su quel blog, è fantastico.
- Abbiamo i tratti. Abbiamo XStream. Abbiamo Calypso. Abbiamo Iceberg. Abbiamo la cosa dei critici. Abbiamo il compilatore Opal. Abbiamo Rubrik per la modifica del testo. Abbiamo Ring come modello di codice. Possiamo ispezionare AST per i metodi. Abbiamo Beacon per un framework di registrazione degli oggetti. Abbiamo WeakReferences funzionanti. Abbiamo UnifiedFFI. Abbiamo 64 bit. Abbiamo carburante. Abbiamo Seaside3. Abbiamo fantastici CommandLineHandlers. Abbiamo Scale for CLI work. Abbiamo Epicea per le modifiche al codice. Abbiamo unAPI FileSystem riprogettata. Abbiamo HelpSystem. Abbiamo uninfrastruttura funzionante con CI e Git e il monitoraggio dei problemi ecc. Che funzionano bene insieme. Abbiamo pilastro per la produzione di libri. Abbiamo TaskIT per lavorare facilmente con il futuro. Abbiamo un discreto sistema di KeyMapping. Abbiamo un Morphic ripulito (cè ancora molto da fare). Abbiamo OSWindow. Abbiamo Refactoring e CodeRewriter. Abbiamo MetaLink con riflettività. Abbiamo Atene per la grafica. Abbiamo il supporto IoT.
Quindi, sì, è ispirato a Smalltalk. Ma sicuramente non Smalltalk-80. È Pharo. Usiamo un faro come nostro logo. Perché ci piace quando cè una luce intensa che spiana la strada alla felicità degli sviluppatori.
Smalltalk è fantastico.
Pharo è migliore quando si tratta di ottenere risultati commerciali quando si utilizza la tecnologia del 21 ° secolo . Perché combinare gli strumenti Pharo tra loro porta a risultati potenti.
E sì, sono supponente.
Risposta
Pharo è un dialetto di Smalltalk. Nella sua sintassi, semantica e implementazione Pharo è una versione di Smalltalk-80 e un parente molto stretto dei dialetti Squeak e Cuis. Tutti e tre discendono direttamente dallo Smalltalk-80 v1 che Apple ha ricevuto da Xerox come parte del processo di scrittura di “Smalltalk-80: the language and its implementation”, alias “the blue book”. Alan Kay ha guidato un team di Apple negli anni 90 che ha sviluppato il dialetto Squeak e limplementazione a partire da Smalltalk-80 v1. Successivamente Cuis e Pharo si biforcano da Squeak. Ma tutti e tre sono passati alla mia Spur VM, unevoluzione della JIT VM che nel 2008/9/10 ho derivato dalloriginale interprete Ritorno al futuro VM per Squeak.
Questi tre dialetti Il parente più vicino luno dallaltro è VisualWorks Smalltalk, che discende direttamente da Smalltalk-80 v2, la versione finale sviluppata da Xerox PARC. Tutti e quattro sono distinguibili dagli altri Smalltalks supportando i contesti (i record di attivazione di prima classe di Smalltalk) tramite la pseudo-variabile thisContext. Un contesto è un record di attivazione; è loggetto che mantiene lo stato di un metodo in esecuzione o la chiusura di un blocco. Una differenza superficiale è che la famiglia Squeak supporta tuple (un comodo costrutto Array) e unistruzione case, mentre VisualWorks ha un sistema di spazio dei nomi e una forma letterale BindingReference per accedere agli oggetti attraverso i confini dello spazio dei nomi.
Una cosa unica riguardo Smalltalk e i suoi parenti stretti Self e Newspeak è che i sistemi si autodefiniscono; classi, metodi e contesti sono tutti oggetti di prima classe definiti in termini di classi e metodi. Questo si estende al loro compilatore e debugger, al sistema di eccezioni, ecc. Ciò consente a Smalltalk di evolversi a livello di linguaggio. Le tuple, listruzione case e gli spazi dei nomi sono stati tutti implementati nei rispettivi sistemi senza dover modificare alcuna macchina virtuale sottostante. Questa capacità di evolversi rende in qualche modo problematico definire esattamente cosa Smalltalk. Uno Smalltalk sano è uno Smalltalk in evoluzione; un bersaglio in movimento.
Alcuni, forse molti, nella comunità Pharo pensano che Smalltalk abbia avuto una cattiva fama negli anni 90, e alcuni sono scontenti per la mancanza di supporto per gli sviluppatori e per lattenzione su Etoys che il team di ricerca di Alan Kay aveva, comprensibilmente come del resto Etoys era il fulcro del team. Di conseguenza Pharo ha unenfasi molto diversa e vuole progredire dal supporto multimediale ormai obsoleto di Squeak verso una migliore integrazione con lattuale ecosistema informatico, come github, e reinventare la programmazione come un processo esplorativo molto più dinamico; vedi ad esempio il lavoro di visualizzazione agile sopra Rossal e il toolkit GT. Quindi alcuni nella comunità Pharo vogliono negare che Pharo sia un dialetto di Smalltalk. Questa è una posizione che capisco ma trovo sia falsa in realtà (innegabilmente, nella sua sintassi, semantica e implementazione Pharo / è / una versione di Smalltalk-80) sia in qualche modo irrispettosa e ingrata (Pharo è un ottimo ambiente di programmazione, sia perché ha grandi persone che ci fanno un ottimo lavoro e sono in grado di farlo perché è uno Smalltalk). Ma non importa. Pharo si distingue per i suoi meriti, un dialetto potente e in rapida evoluzione di Smalltalk che offre vantaggi di produttività radicali ai programmatori. Spero che darai più di una rapida occhiata. Sta andando da qualche parte.