Wat is beter, Smalltalk of Pharo?

Beste antwoord

Lang verhaal.

TL; DR-versie is de volgende vanuit mijn oogpunt:

  • Je kunt de originele Smalltalk-boeken lezen en er waarde uit halen als je Pharo gebruikt, dus er is zeker een solide Smalltalk-erfenis.
  • Op het gebied van gereedschap is er zijn verschillende verbeteringen in Pharo die het behoorlijk uniek en anders maken dan Smalltalk 80. Bijvoorbeeld:
  • GToolkit, met superkrachtige inspecteurs
  • Spotter, waardoor het een heel interessante manier is om toegang te krijgen tot items van het systeem enz.
  • Spec en Bloc voor andere manieren om UI te doen dan MVC en Morphic
  • Opruimingen en toevoegingen aan de standaardpakketten van Squeak
  • Zinc, NeoJson, STON, … allemaal afkomstig van de Pharo-gemeenschap
  • Roassal2, voor visualisaties, ook afkomstig van de Pharo-gemeenschap
  • De VM, die nu een gemeenschappelijke OpenSmalltalk / opensmalltalk-vm streven met specifieke Pharo-gebieden is sneller, w ith een betere JIT, en een andere bytecode set. Geheugenbeheer met pointer forwarding wordt: veel sneller. Controleer De Pharo garbage collector afstellen , controleer 7-punts samenvatting van de Spur-geheugenbeheerder , Nou, controleer alles op die blog, het is gewoon geweldig.
  • We hebben eigenschappen. We hebben XStreams. We hebben Calypso. We hebben Iceberg. We hebben het Critics-ding. We hebben de Opal-compiler. We hebben Rubrik voor tekstredactie. We hebben Ring als codemodel. We kunnen AST inspecteren op methoden. We hebben Beacon voor een objectregistratieframework. We hebben werkende WeakReferences. We hebben UnifiedFFI. We hebben 64 bits. We hebben brandstof. We hebben Seaside3. We hebben coole CommandLineHandlers. We hebben schaal voor CLI-werk. We hebben Epicea voor codewijzigingen. We hebben een opnieuw ontworpen FileSystem API. We hebben HelpSystem. We hebben een werkende infrastructuur met CI en Git en het volgen van problemen enz. Die goed samenwerken. We hebben Pillar voor het produceren van boeken. We hebben TaskIT voor eenvoudig werk met futures. We hebben een behoorlijk KeyMapping-systeem. We hebben een opgeschoonde Morphic (nog meer te doen). We hebben OSWindow. We hebben Refactorings en CodeRewriter. We hebben MetaLinks met reflectievermogen. We hebben Athene voor afbeeldingen. We hebben IoT-ondersteuning.

Dus ja, het is geïnspireerd door Smalltalk. Maar zeker niet Smalltalk-80. Het is Pharo. We gebruiken een vuurtoren als ons logo. Omdat we het leuk vinden als er wat helder licht is dat de weg baant naar gelukzaligheid voor ontwikkelaars.

Smalltalk is geweldig.

Pharo is beter als het gaat om het behalen van bedrijfsresultaten bij het gebruik van technologie van de 21e eeuw. . Omdat het combineren van Pharo-tools met elkaar leidt tot krachtige resultaten.

En ja, ik ben eigenwijs.

Antwoord

Pharo is een dialect van Smalltalk. In zijn syntaxis, semantiek en implementatie is Pharo een versie van Smalltalk-80, en een zeer nauwe verwant van de dialecten Squeak en Cuis. Alle drie stammen rechtstreeks af van de Smalltalk-80 v1 die Apple kreeg van Xerox als onderdeel van het proces van het schrijven van “Smalltalk-80: de taal en de implementatie”, ook wel “het blauwe boek” genoemd. Alan Kay leidde een team bij Apple in de jaren 90 dat het Squeak-dialect en de implementatie ontwikkelde, te beginnen met Smalltalk-80 v1. Later namen Cuis en Pharo een vork van Squeak. Maar alle drie zijn overgeschakeld naar mijn Spur VM, een evolutie van de JIT VM die ik in 2008/9/10 heb afgeleid van de originele Back-to-the-future-interpreter VM voor Squeak.

Deze drie dialecten naaste verwant van elkaar is VisualWorks Smalltalk, dat rechtstreeks afstamt van Smalltalk-80 v2, de definitieve versie die is ontwikkeld bij Xerox PARC. Alle vier zijn te onderscheiden van andere Smalltalks door het ondersteunen van contexten (Smalltalks eersteklas activeringsrecords) via de thisContext pseudo-variabele. Een context is een activeringsrecord; het is het object dat de status van een lopende methode of bloksluiting vasthoudt. Een oppervlakkig verschil is dat de Squeak-familie tuples ondersteunt (een handige Array-constructie) en een case-statement, terwijl VisualWorks een namespace-systeem en een letterlijke vorm van BindingReference heeft voor toegang tot objecten over de grenzen van de naamruimte heen.

Een uniek ding aan Smalltalk en zijn naaste verwanten Self en Newspeak is dat de systemen zichzelf definiëren; klassen, methoden en contexten zijn allemaal eersteklas objecten, gedefinieerd in termen van klassen en methoden. Dit strekt zich uit tot hun compiler en debugger, het uitzonderingssysteem, enz. Hierdoor kan Smalltalk evolueren op taalniveau. Tuples, de case-statement en namespaces werden allemaal geïmplementeerd in hun respectievelijke systemen zonder enige onderliggende virtuele machine te hoeven wijzigen. Dit vermogen om te evolueren maakt het enigszins problematisch om precies te definiëren wat Smalltalk is. Een gezonde Smalltalk is een evoluerende Smalltalk; een bewegend doelwit.

Sommigen, misschien velen, in de Pharo-gemeenschap denken dat Smalltalk een slechte naam kreeg in de jaren 90, en sommigen zijn ongelukkig over het gebrek aan ondersteuning voor ontwikkelaars en richten zich op Etoys die het onderzoeksteam van Alan Kay had, begrijpelijkerwijs want Etoys was inderdaad de focus van het team. Dientengevolge heeft Pharo een heel andere nadruk en wil hij vooruitgang boeken van Squeaks nu verouderende multimediaondersteuning naar een betere integratie met het huidige computerecosysteem, zoals github, en naar het opnieuw uitvinden van programmeren als een veel dynamischer verkennend proces; zie bijvoorbeeld het agile visualisatiewerk boven Rossal en de GT-toolkit. Daarom willen sommigen in de Pharo-gemeenschap ontkennen dat Pharo een dialect van Smalltalk is. Dit is een standpunt dat ik begrijp, maar vind zowel onwaar in werkelijkheid (onmiskenbaar, in zijn syntaxis, semantiek en implementatie Pharo / is / een versie van Smalltalk-80) als enigszins respectloos en ondankbaar (Pharo is een geweldige programmeeromgeving, beide omdat het geweldige mensen die er geweldig werk in doen en dat kunnen omdat het een Smalltalk is). Maar laat maar. Pharo staat op zijn verdiensten, een krachtig, snel evoluerend dialect van Smalltalk dat radicale productiviteitsvoordelen biedt voor programmeurs. Ik hoop dat je er meer dan een vluchtige blik op werpt. Het gaat naar plaatsen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *