SlideShare une entreprise Scribd logo
1  sur  80
Object Oriented Programming What does OOP stand for? Colin Riley @domipheus
Me ,[object Object],[object Object],[object Object],[object Object]
Coding talks ,[object Object],[object Object],[object Object],[object Object]
To begin, a question. ,[object Object],[object Object],[object Object],[object Object],[object Object]
My view ,[object Object],[object Object],[object Object],[object Object]
A quick link back ,[object Object],[object Object],[object Object]
For me, it plays a part. ,[object Object],[object Object],[object Object],[object Object]
So what can OOP stand for? O OP  O bfuscates  P roductivity OOP
Ehh? What you smoking? ,[object Object],[object Object],[object Object]
[object Object]
WTF
 
WTF
 
WTF
 
 
WTF
 
WTF
 
WTF
 
SOFTWARE IS A PLATFORM? ,[object Object],[object Object],[object Object],[object Object],See ‘Three Big Lies’ by Mike Acton
[object Object],[object Object],[object Object]
More examples I retweeted a talk that Jonathan Blow of Braid fame gave to Berkeleys compsci group. He mentioned that he now does pretty much everything in simple flat arrays, no complicated data structures.
Productivity ,[object Object]
LittleBigPlanet ,[object Object],[object Object],[object Object],[object Object],[object Object]
Need a system for handling the states of your things?
That  does not mean  you need a massive component system that is scalable and can handle any matter of things and things v2.0 and things v3.0
[object Object],[object Object],[object Object],[object Object]
But what about the future? ,[object Object],[object Object],[object Object]
So… ,[object Object],[object Object],[object Object],[object Object]
Hrm… ,[object Object],[object Object],[object Object]
The beginning. ,[object Object],[object Object],[object Object]
 
 
 
Why is that? ,[object Object]
 
 
 
 
 
How do we get the data up to the code?
 
 
 
And here where OOP falls flat ,[object Object],[object Object]
So what can OOP stand for? O OP  O bliterates  P erformance OOP (in high data throughput cases, which there are many in games) is basically
An example ,[object Object],[object Object],[object Object],[object Object],[object Object]
struct  Details  { int numShots; int numDeaths; int numTargets; int lifetime; int state; int priority; int health; int ammo;  int friendThings[4]; }; // 48 bytes class  Thing  { Vector3  mPosition; Quat   mOrientation; Colour  mColour; Vector3  mVelocity; float  mDecay; Details   mDetails; }; // 96 bytes
OOP ish class  ThingSystem  { String  mName; std::vector<Thing>  mThings; .... }; void  Thing :: UpdatePosition () { mPosition += mVelocity; mVelocity *= mDecay; } void  ThingSystem :: UpdateThingPositions () { for( vector <int>:: iterator  iter = mThings. begin ();    iter != mThings. end (); iter++) { *iter. UpdatePosition (); } }
Now… ,[object Object],[object Object],[object Object],[object Object],[object Object]
OOP fits 4 things.
 
Not great is it?
Enter DOD ,[object Object],[object Object],[object Object]
Enter DOD ,[object Object],[object Object]
DOD ish class  ThingSystem  { Vector3  mThingPosition[MAX_THINGS]; Quat  mThingOrientation[MAX_THINGS]; Colour  mThingColour[MAX_THINGS]; Vector3  mThingVelocity[MAX_THINGS]; float  mThingDecay[MAX_THINGS]; Details mThingDetails[MAX_THINGS]; int  mNumThings; .... }; void  ThingSystem :: UpdateThingPositions () { for(int i = 0; i< mNumThings; i++) { mThingPosition[i] += mThingVelocity[i]; mThingVelocity[i] *= mThingDecay[i]; } }
Doesn’t look that different? ,[object Object],[object Object],[object Object],[object Object]
DOD fits  16  things.
 
So what keeps the OOP version lower on the performance scale?
Costs ,[object Object],[object Object],[object Object]
 
Lets put that into numbers ,[object Object],[object Object],[object Object],[object Object],[object Object]
Lets think a minute. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thinking again… ,[object Object],[object Object]
More thinking… ,[object Object],[object Object],[object Object]
EVEN MORE THINKING ,[object Object],[object Object],[object Object]
For a real world example… ,[object Object],[object Object],[object Object]
In conclusion ,[object Object],[object Object],[object Object]
Well, thanks. ,[object Object],[object Object],[object Object]
Follow me, @domipheus, on Twitter! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Questions?
Why twitter is awesome!
Twitter == awesome
Twitter == awesome
Twitter == awesome
Twitter == awesome ,[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languagesppd1961
 
Object Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceObject Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceGajesh Bhat
 
Design Patterns Illustrated
Design Patterns IllustratedDesign Patterns Illustrated
Design Patterns IllustratedHerman Peeren
 
Cs8392 u1-1-oop intro
Cs8392 u1-1-oop introCs8392 u1-1-oop intro
Cs8392 u1-1-oop introRajasekaran S
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesDr. Syed Hassan Amin
 
Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Sakthi Durai
 
Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Mahmoud Alfarra
 
Programming Fundamentals With OOPs Concepts (Java Examples Based)
Programming Fundamentals With OOPs Concepts (Java Examples Based)Programming Fundamentals With OOPs Concepts (Java Examples Based)
Programming Fundamentals With OOPs Concepts (Java Examples Based)indiangarg
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming ConceptsBhushan Nagaraj
 
Java oops and fundamentals
Java oops and fundamentalsJava oops and fundamentals
Java oops and fundamentalsjavaease
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Javawiradikusuma
 
Object Oriented Programming Principles
Object Oriented Programming PrinciplesObject Oriented Programming Principles
Object Oriented Programming PrinciplesAndrew Ferlitsch
 
Basics of Object Oriented Programming
Basics of Object Oriented ProgrammingBasics of Object Oriented Programming
Basics of Object Oriented ProgrammingAbhilash Nair
 
OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingPurvik Rana
 

Tendances (20)

Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
 
Object Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significanceObject Oriented Programming : A Brief History and its significance
Object Oriented Programming : A Brief History and its significance
 
Design Patterns Illustrated
Design Patterns IllustratedDesign Patterns Illustrated
Design Patterns Illustrated
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Cs8392 u1-1-oop intro
Cs8392 u1-1-oop introCs8392 u1-1-oop intro
Cs8392 u1-1-oop intro
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design Principles
 
Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1
 
Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1
 
Programming Fundamentals With OOPs Concepts (Java Examples Based)
Programming Fundamentals With OOPs Concepts (Java Examples Based)Programming Fundamentals With OOPs Concepts (Java Examples Based)
Programming Fundamentals With OOPs Concepts (Java Examples Based)
 
OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Oop
OopOop
Oop
 
Java oops and fundamentals
Java oops and fundamentalsJava oops and fundamentals
Java oops and fundamentals
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Java
 
Object Oriented Programming Principles
Object Oriented Programming PrinciplesObject Oriented Programming Principles
Object Oriented Programming Principles
 
Basic concept of OOP's
Basic concept of OOP'sBasic concept of OOP's
Basic concept of OOP's
 
Basics of Object Oriented Programming
Basics of Object Oriented ProgrammingBasics of Object Oriented Programming
Basics of Object Oriented Programming
 
Java Object Oriented Programming
Java Object Oriented Programming Java Object Oriented Programming
Java Object Oriented Programming
 
Oop lec 2
Oop lec 2Oop lec 2
Oop lec 2
 
OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android Programming
 

En vedette

Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingMoutaz Haddara
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Conceptsthinkphp
 
OOP Is More Then Cars and Dogs - Midwest PHP 2017
OOP Is More Then Cars and Dogs - Midwest PHP 2017OOP Is More Then Cars and Dogs - Midwest PHP 2017
OOP Is More Then Cars and Dogs - Midwest PHP 2017Chris Tankersley
 
Object-Oriented Programming Concepts
Object-Oriented Programming ConceptsObject-Oriented Programming Concepts
Object-Oriented Programming ConceptsKwangshin Oh
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01Adil Kakakhel
 
What I Done on my Holidays
What I Done on my HolidaysWhat I Done on my Holidays
What I Done on my HolidaysLuke Dicken
 
Chris Wright: Games Analytics
Chris Wright: Games AnalyticsChris Wright: Games Analytics
Chris Wright: Games AnalyticsKraig Walker
 
Design Pattern lecture 1
Design Pattern lecture 1Design Pattern lecture 1
Design Pattern lecture 1Julie Iskander
 
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays AcademyMelissaLoschy
 
Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1MelissaLoschy
 

En vedette (20)

Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented Programming
 
Oops ppt
Oops pptOops ppt
Oops ppt
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
OOP Is More Then Cars and Dogs - Midwest PHP 2017
OOP Is More Then Cars and Dogs - Midwest PHP 2017OOP Is More Then Cars and Dogs - Midwest PHP 2017
OOP Is More Then Cars and Dogs - Midwest PHP 2017
 
Object-Oriented Programming Concepts
Object-Oriented Programming ConceptsObject-Oriented Programming Concepts
Object-Oriented Programming Concepts
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
What I Done on my Holidays
What I Done on my HolidaysWhat I Done on my Holidays
What I Done on my Holidays
 
Story
StoryStory
Story
 
Chris Wright: Games Analytics
Chris Wright: Games AnalyticsChris Wright: Games Analytics
Chris Wright: Games Analytics
 
Unusual C# - OOP
Unusual C# - OOPUnusual C# - OOP
Unusual C# - OOP
 
Java basic understand OOP
Java basic understand OOPJava basic understand OOP
Java basic understand OOP
 
Java OO Revisited
Java OO RevisitedJava OO Revisited
Java OO Revisited
 
Applying OO Concepts
Applying OO ConceptsApplying OO Concepts
Applying OO Concepts
 
Design Pattern lecture 1
Design Pattern lecture 1Design Pattern lecture 1
Design Pattern lecture 1
 
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
 
Reading
ReadingReading
Reading
 
Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1
 
Vitodens 01
Vitodens 01Vitodens 01
Vitodens 01
 

Similaire à What does OOP stand for?

The GAME that never was
The GAME that never wasThe GAME that never was
The GAME that never wasRogan Flitton
 
Confoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceConfoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceSusan Ibach
 
Breaking first-normal form with Hive
Breaking first-normal form with HiveBreaking first-normal form with Hive
Breaking first-normal form with HiveEdward Capriolo
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++Mike Acton
 
Python enterprise vento di liberta
Python enterprise vento di libertaPython enterprise vento di liberta
Python enterprise vento di libertaSimone Federici
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2ice799
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java ProgrammingKaty Allen
 
Big Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkBig Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkKenny Bastani
 
Creating your own Abstract Processor
Creating your own Abstract ProcessorCreating your own Abstract Processor
Creating your own Abstract ProcessorAodrulez
 
You shouldneverdo
You shouldneverdoYou shouldneverdo
You shouldneverdodaniil3
 
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...Daniel Zivkovic
 
Boost Your Base Bootcamp - [Online & Offline] In Bangla
Boost Your Base Bootcamp - [Online & Offline] In BanglaBoost Your Base Bootcamp - [Online & Offline] In Bangla
Boost Your Base Bootcamp - [Online & Offline] In BanglaStack Learner
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teamsJamie Thomas
 
Object Oriented Programming -- Dr Robert Harle
Object Oriented Programming -- Dr Robert HarleObject Oriented Programming -- Dr Robert Harle
Object Oriented Programming -- Dr Robert Harlesuthi
 
DataDay 2023 Presentation - Notes
DataDay 2023 Presentation - NotesDataDay 2023 Presentation - Notes
DataDay 2023 Presentation - NotesMax De Marzi
 
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On?
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On? Mind Control to Major Tom: Is It Time to Put Your EEG Headset On?
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On? Steve Poole
 

Similaire à What does OOP stand for? (20)

The GAME that never was
The GAME that never wasThe GAME that never was
The GAME that never was
 
Confoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceConfoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data science
 
Breaking first-normal form with Hive
Breaking first-normal form with HiveBreaking first-normal form with Hive
Breaking first-normal form with Hive
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++
 
All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
Python enterprise vento di liberta
Python enterprise vento di libertaPython enterprise vento di liberta
Python enterprise vento di liberta
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
 
Big Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkBig Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache Spark
 
Creating your own Abstract Processor
Creating your own Abstract ProcessorCreating your own Abstract Processor
Creating your own Abstract Processor
 
You shouldneverdo
You shouldneverdoYou shouldneverdo
You shouldneverdo
 
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
 
Boost Your Base Bootcamp - [Online & Offline] In Bangla
Boost Your Base Bootcamp - [Online & Offline] In BanglaBoost Your Base Bootcamp - [Online & Offline] In Bangla
Boost Your Base Bootcamp - [Online & Offline] In Bangla
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 
All of javascript
All of javascriptAll of javascript
All of javascript
 
Oop
OopOop
Oop
 
Object Oriented Programming -- Dr Robert Harle
Object Oriented Programming -- Dr Robert HarleObject Oriented Programming -- Dr Robert Harle
Object Oriented Programming -- Dr Robert Harle
 
DataDay 2023 Presentation - Notes
DataDay 2023 Presentation - NotesDataDay 2023 Presentation - Notes
DataDay 2023 Presentation - Notes
 
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On?
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On? Mind Control to Major Tom: Is It Time to Put Your EEG Headset On?
Mind Control to Major Tom: Is It Time to Put Your EEG Headset On?
 
Big data made easy with a Spark
Big data made easy with a SparkBig data made easy with a Spark
Big data made easy with a Spark
 

Dernier

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 

Dernier (20)

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 

What does OOP stand for?

  • 1. Object Oriented Programming What does OOP stand for? Colin Riley @domipheus
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. So what can OOP stand for? O OP O bfuscates P roductivity OOP
  • 9.
  • 10.
  • 11. WTF
  • 12.  
  • 13. WTF
  • 14.  
  • 15. WTF
  • 16.  
  • 17.  
  • 18. WTF
  • 19.  
  • 20. WTF
  • 21.  
  • 22. WTF
  • 23.  
  • 24.
  • 25.
  • 26. More examples I retweeted a talk that Jonathan Blow of Braid fame gave to Berkeleys compsci group. He mentioned that he now does pretty much everything in simple flat arrays, no complicated data structures.
  • 27.
  • 28.
  • 29. Need a system for handling the states of your things?
  • 30. That does not mean you need a massive component system that is scalable and can handle any matter of things and things v2.0 and things v3.0
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.  
  • 37.  
  • 38.  
  • 39.
  • 40.  
  • 41.  
  • 42.  
  • 43.  
  • 44.  
  • 45. How do we get the data up to the code?
  • 46.  
  • 47.  
  • 48.  
  • 49.
  • 50. So what can OOP stand for? O OP O bliterates P erformance OOP (in high data throughput cases, which there are many in games) is basically
  • 51.
  • 52. struct Details { int numShots; int numDeaths; int numTargets; int lifetime; int state; int priority; int health; int ammo; int friendThings[4]; }; // 48 bytes class Thing { Vector3 mPosition; Quat mOrientation; Colour mColour; Vector3 mVelocity; float mDecay; Details mDetails; }; // 96 bytes
  • 53. OOP ish class ThingSystem { String mName; std::vector<Thing> mThings; .... }; void Thing :: UpdatePosition () { mPosition += mVelocity; mVelocity *= mDecay; } void ThingSystem :: UpdateThingPositions () { for( vector <int>:: iterator iter = mThings. begin (); iter != mThings. end (); iter++) { *iter. UpdatePosition (); } }
  • 54.
  • 55. OOP fits 4 things.
  • 56.  
  • 58.
  • 59.
  • 60. DOD ish class ThingSystem { Vector3 mThingPosition[MAX_THINGS]; Quat mThingOrientation[MAX_THINGS]; Colour mThingColour[MAX_THINGS]; Vector3 mThingVelocity[MAX_THINGS]; float mThingDecay[MAX_THINGS]; Details mThingDetails[MAX_THINGS]; int mNumThings; .... }; void ThingSystem :: UpdateThingPositions () { for(int i = 0; i< mNumThings; i++) { mThingPosition[i] += mThingVelocity[i]; mThingVelocity[i] *= mThingDecay[i]; } }
  • 61.
  • 62. DOD fits 16 things.
  • 63.  
  • 64. So what keeps the OOP version lower on the performance scale?
  • 65.
  • 66.  
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76. Why twitter is awesome!
  • 80.

Notes de l'éditeur

  1. ALTDEVBLOGADAY ROUTE 2 INDUSTRY – MODS, PERSONAL PROJECTS &amp; GAMES HARDWARE BASED UNI PROJECT
  2. METHODS SIMPLIFIED FOR EASE
  3. Go to next slide
  4. Go to next slide
  5. Go to next slide
  6. Go to next slide
  7. Go to next slide
  8. Go to next slide
  9. It even has an IsSingleton()!
  10. Go to next slide
  11. Go to next slide
  12. Go to next slide
  13. Go to next slide
  14. Go to next slide
  15. Go to next slide
  16. Jonathan: “Data Structures are Optimization”
  17. Extra example: ProjectRaceway xna entity system Deleted it after a year Track cells now have a typed, flat list of entities within it So much simpler to debug and keep track of.
  18. This is basically what is taught.
  19. Code data transform
  20. encapsulation
  21. Old diagram Possibly seen before.
  22. STACK THE DATA
  23. SIMD
  24. Perf difference
  25. Ideal example; cache already fetching ‘next’ block of 512 bytes. Void is idle cpu.
  26. Don’t over engineer your code. Know the problem areas. [Edit: I forgot to remove the swearing from this slide in the given talk!]
  27. Profiling important
  28. You can make an ‘OOP looking’ codebase but behind the scenes it uses nice flat data structures, if OOP is essential.
  29. [Edit: completely failed at trying to start this, had more luck before the talk was given! Twitter being awesome still stands, though]