Enviar pesquisa
Carregar
Classes in the Mist
•
1 gostou
•
1,976 visualizações
E
ESUG
Seguir
A non-traditional Smalltalk gets classy
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 54
Baixar agora
Baixar para ler offline
Recomendados
Andres Rodriguez at AI Frontiers: Catalyzing Deep Learning's Impact in the En...
Andres Rodriguez at AI Frontiers: Catalyzing Deep Learning's Impact in the En...
AI Frontiers
Use of tools for research 2016
Use of tools for research 2016
Jing Deng
My Linux Job: 21 Linux Pros Tell Us What They Do
My Linux Job: 21 Linux Pros Tell Us What They Do
Libby Clark
Multimedia Presentation in Köthen Castle
Multimedia Presentation in Köthen Castle
ESUG
Language-side Foreign Function Interfaces with NativeBoost
Language-side Foreign Function Interfaces with NativeBoost
ESUG
Changeboxes
Changeboxes
ESUG
ESUG 2006 Welcome
ESUG 2006 Welcome
ESUG
Open Aspects
Open Aspects
ESUG
Recomendados
Andres Rodriguez at AI Frontiers: Catalyzing Deep Learning's Impact in the En...
Andres Rodriguez at AI Frontiers: Catalyzing Deep Learning's Impact in the En...
AI Frontiers
Use of tools for research 2016
Use of tools for research 2016
Jing Deng
My Linux Job: 21 Linux Pros Tell Us What They Do
My Linux Job: 21 Linux Pros Tell Us What They Do
Libby Clark
Multimedia Presentation in Köthen Castle
Multimedia Presentation in Köthen Castle
ESUG
Language-side Foreign Function Interfaces with NativeBoost
Language-side Foreign Function Interfaces with NativeBoost
ESUG
Changeboxes
Changeboxes
ESUG
ESUG 2006 Welcome
ESUG 2006 Welcome
ESUG
Open Aspects
Open Aspects
ESUG
DSL, the absolute weapon for the development
DSL, the absolute weapon for the development
ESUG
Agile Seaside
Agile Seaside
ESUG
Application Frameworks an Experience Report
Application Frameworks an Experience Report
ESUG
VAST 7.5 and Beyond
VAST 7.5 and Beyond
ESUG
ESUG 2007 Welcome
ESUG 2007 Welcome
ESUG
EasyMorphicGUI
EasyMorphicGUI
ESUG
Cincom® ObjectStudio® New Native GUI Implementation Preview
Cincom® ObjectStudio® New Native GUI Implementation Preview
ESUG
GemTalk Systems Overview
GemTalk Systems Overview
ESUG
Bytecode Optimizations
Bytecode Optimizations
ESUG
Wiki slide
Wiki slide
vandria17
Universidad tecnologica indoamerica
Universidad tecnologica indoamerica
Ivan Mauricio Reyes
Piotr kropotkin ajuda mútua um fator de evolução [272]
Piotr kropotkin ajuda mútua um fator de evolução [272]
Alvanice Souza
Programa 13 ELIZONDO
Programa 13 ELIZONDO
Mayra Elizondo
9 класс итог за 8
9 класс итог за 8
Юлиана Соловьева
Simply local leads presentation
Simply local leads presentation
Stephanie Franklin
Ficha Técnica H420
Ficha Técnica H420
Lenovo
Rubrica
Rubrica
Gissela Fernández Fernández
Out of the blue.
Out of the blue.
shelleyhaddow
What schools should be teaching IT students
What schools should be teaching IT students
Andy Lester
Design patterns
Design patterns
Jeff Potter
Malware Analysis on a Shoestring Budget
Malware Analysis on a Shoestring Budget
Michael Boman
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
Jeremy Miller
Mais conteúdo relacionado
Destaque
DSL, the absolute weapon for the development
DSL, the absolute weapon for the development
ESUG
Agile Seaside
Agile Seaside
ESUG
Application Frameworks an Experience Report
Application Frameworks an Experience Report
ESUG
VAST 7.5 and Beyond
VAST 7.5 and Beyond
ESUG
ESUG 2007 Welcome
ESUG 2007 Welcome
ESUG
EasyMorphicGUI
EasyMorphicGUI
ESUG
Cincom® ObjectStudio® New Native GUI Implementation Preview
Cincom® ObjectStudio® New Native GUI Implementation Preview
ESUG
GemTalk Systems Overview
GemTalk Systems Overview
ESUG
Bytecode Optimizations
Bytecode Optimizations
ESUG
Wiki slide
Wiki slide
vandria17
Universidad tecnologica indoamerica
Universidad tecnologica indoamerica
Ivan Mauricio Reyes
Piotr kropotkin ajuda mútua um fator de evolução [272]
Piotr kropotkin ajuda mútua um fator de evolução [272]
Alvanice Souza
Programa 13 ELIZONDO
Programa 13 ELIZONDO
Mayra Elizondo
9 класс итог за 8
9 класс итог за 8
Юлиана Соловьева
Simply local leads presentation
Simply local leads presentation
Stephanie Franklin
Ficha Técnica H420
Ficha Técnica H420
Lenovo
Rubrica
Rubrica
Gissela Fernández Fernández
Out of the blue.
Out of the blue.
shelleyhaddow
Destaque
(18)
DSL, the absolute weapon for the development
DSL, the absolute weapon for the development
Agile Seaside
Agile Seaside
Application Frameworks an Experience Report
Application Frameworks an Experience Report
VAST 7.5 and Beyond
VAST 7.5 and Beyond
ESUG 2007 Welcome
ESUG 2007 Welcome
EasyMorphicGUI
EasyMorphicGUI
Cincom® ObjectStudio® New Native GUI Implementation Preview
Cincom® ObjectStudio® New Native GUI Implementation Preview
GemTalk Systems Overview
GemTalk Systems Overview
Bytecode Optimizations
Bytecode Optimizations
Wiki slide
Wiki slide
Universidad tecnologica indoamerica
Universidad tecnologica indoamerica
Piotr kropotkin ajuda mútua um fator de evolução [272]
Piotr kropotkin ajuda mútua um fator de evolução [272]
Programa 13 ELIZONDO
Programa 13 ELIZONDO
9 класс итог за 8
9 класс итог за 8
Simply local leads presentation
Simply local leads presentation
Ficha Técnica H420
Ficha Técnica H420
Rubrica
Rubrica
Out of the blue.
Out of the blue.
Semelhante a Classes in the Mist
What schools should be teaching IT students
What schools should be teaching IT students
Andy Lester
Design patterns
Design patterns
Jeff Potter
Malware Analysis on a Shoestring Budget
Malware Analysis on a Shoestring Budget
Michael Boman
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
Jeremy Miller
All about that reactive ui
All about that reactive ui
Paul van Zyl
Choosing a JavaScript Framework
Choosing a JavaScript Framework
Treasure Data, Inc.
Autonomous Frontend Team
Autonomous Frontend Team
Nikita Khristinin
Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8
Phase2
Deep learning in production with the best
Deep learning in production with the best
Adam Gibson
Machine Learning Infrastructure
Machine Learning Infrastructure
SigOpt
James Coplien - Trygve - October 17, 2016
James Coplien - Trygve - October 17, 2016
Foo Café Copenhagen
GoLang - Why It Matters
GoLang - Why It Matters
rahul
Core Principles Of Ci
Core Principles Of Ci
OpenSource Connections
Shmoocon 2015 - httpscreenshot
Shmoocon 2015 - httpscreenshot
jstnkndy
Chaos Engineering Talk at DevOps Days Austin
Chaos Engineering Talk at DevOps Days Austin
matthewbrahms
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software
Nolan vaughn(ndvaughn) company presentation
Nolan vaughn(ndvaughn) company presentation
NolanVaughn
Weaponizing Neural Networks. In your browser!
Weaponizing Neural Networks. In your browser!
DefCamp
Debugging a .NET program after crash (Post-mortem debugging)
Debugging a .NET program after crash (Post-mortem debugging)
Mirco Vanini
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
Wojciech Seliga
Semelhante a Classes in the Mist
(20)
What schools should be teaching IT students
What schools should be teaching IT students
Design patterns
Design patterns
Malware Analysis on a Shoestring Budget
Malware Analysis on a Shoestring Budget
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
All about that reactive ui
All about that reactive ui
Choosing a JavaScript Framework
Choosing a JavaScript Framework
Autonomous Frontend Team
Autonomous Frontend Team
Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8
Deep learning in production with the best
Deep learning in production with the best
Machine Learning Infrastructure
Machine Learning Infrastructure
James Coplien - Trygve - October 17, 2016
James Coplien - Trygve - October 17, 2016
GoLang - Why It Matters
GoLang - Why It Matters
Core Principles Of Ci
Core Principles Of Ci
Shmoocon 2015 - httpscreenshot
Shmoocon 2015 - httpscreenshot
Chaos Engineering Talk at DevOps Days Austin
Chaos Engineering Talk at DevOps Days Austin
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Nolan vaughn(ndvaughn) company presentation
Nolan vaughn(ndvaughn) company presentation
Weaponizing Neural Networks. In your browser!
Weaponizing Neural Networks. In your browser!
Debugging a .NET program after crash (Post-mortem debugging)
Debugging a .NET program after crash (Post-mortem debugging)
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
Mais de ESUG
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
Technical documentation support in Pharo
Technical documentation support in Pharo
ESUG
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
Garbage Collector Tuning
Garbage Collector Tuning
ESUG
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
thisContext in the Debugger
thisContext in the Debugger
ESUG
Websockets for Fencing Score
Websockets for Fencing Score
ESUG
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
Mais de ESUG
(20)
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
Technical documentation support in Pharo
Technical documentation support in Pharo
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
Garbage Collector Tuning
Garbage Collector Tuning
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
thisContext in the Debugger
thisContext in the Debugger
Websockets for Fencing Score
Websockets for Fencing Score
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
Último
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Rustici Software
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
The Digital Insurer
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
MIND CTI
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Dropbox
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
apidays
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
apidays
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
lior mazor
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
Último
(20)
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Classes in the Mist
1.
Martin is getting the
projector to work with his laptop.
2.
Classes in the
Mist A Non- Traditional Smalltalk Gets Classy Martin McClure
3.
There is no
“I” in “Team”
4.
There is no
“C” in “Smalltalk”
5.
Mist •Open-source (MIT) •mist-project.org (see previous
videos) •Github
6.
Status (overview)
7.
Status (overview) Why Now?
8.
Values •Self-sufficiency •Simplicity •Consistency •Speed •Craziness
9.
Self-Sufficiency
10.
Minimize Dependencies
11.
Minimize Dependencies Maximize Interoperability
12.
Simplicity
13.
Consistency
14.
Speed
15.
Craziness
16.
“If you aren't
doing some things that are crazy, you're doing the wrong things” Larry Page, Google CEO
17.
Values •Self-sufficiency •Simplicity •Consistency •Speed •Craziness
18.
Strategies •Spend memory freely •Start
simple •Broad solutions •Unconventional first •Go for the 80/20
19.
Implementation
20.
Initial Target X86_64 Linux
21.
Mist compiles to Fog compiles to machine
code
22.
Primitives are written
directly in Fog
23.
Executable image
24.
Fully Dynamic
25.
Object Headers
26.
Object Headers NO
27.
Object Headers Instance Variables
28.
Memory Management
29.
30.
Garbage Collection gcMark isGcMarked ifFalse: [isGcMarked := true. self allReferencesDo: [:each | each gcMark]] gcSweep isGcMarked ifTrue: [isGcMarked := false] ifFalse: [|size| size := self physicalSize. class := FreeSpace. self physicalSize: size. TheObjectManager add: self toFreeListForSize: size]
31.
Tail Call Elimination
32.
Loop using recursion SmallInteger to: limit byPositive: increment do: aBlock | nextIndex | aBlock value: self. nextIndex := self + increment. ^ nextIndex > limit ifFalse: [nextIndex to: limit byPositive: increment do: aBlock].
33.
Loop with Tail
Call Elimination SmallInteger to: limit byPositive: increment do: aBlock | nextIndex | aBlock value: self. nextIndex := self + increment. ^ nextIndex > limit ifFalse: [nextIndex to: limit byPositive: increment do: aBlock].
34.
Loop with Tail
Call Elimination False ifFalse: aBlock ^ aBlock value. <this block's closure class> value ^ nextIndex to: limit byPositive: increment do: aBlock.
35.
Language Features
36.
Traits
37.
Stateful Traits Name: IdentityHash Instance Variables: identityHash Methods: identityHash identityhash == nil ifTrue: [identityHash := Random integer]. ^identityHash
38.
Indexed instvars as
a trait
39.
Do you need both
concepts?
40.
Classes Compose...
41.
...but Do Not
Inherit
42.
Methods ● Compose as
in traits ● Rename or omit on conflict ● Can declare private ● No super send ● Special behavior of self send
43.
Instvars ● Private to
defining class ● Name conflicts impossible ● Indexed instvars – some fussing needed
44.
Abstract Class ● #basicNew
not understood ● “class” instvar not present
45.
Concrete Class ● Compose
one concrete class ...and only one
46.
Class Composition vs Object Composition
47.
Modules
48.
Variables ● Args and
temps ● Instance variables ● Module variables – Class names ● Class variables? – Compile-time constants
49.
Safety ● Privacy ● Teams
50.
Massively Single- threaded
51.
No String Literals
52.
Stream Literals 'Name: [name] Address: [address]'
53.
Status (detailed)
54.
Classes in the
Mist A Non- Traditional Smalltalk Gets Classy Martin McClure
Baixar agora