SlideShare uma empresa Scribd logo
1 de 54
Spreadsheets are code
Felienne Hermans (@felienne)
Spreadsheets are code
Felienne Hermans (@felienne)
In this slidedeck I explain whyy
spreadsheets are code, and what
we can do with that idea.
Spreadsheets are mislabeled
Spreadsheets are mislabeled
People often think of spreadsheets
as data, but...
Spreadsheets are code
Spreadsheets are code
I have made it my life’s work to
spread the happy word
“Spreadsheets are code!”
Spreadsheets are code
I have made it my life’s work to
spread the happy word
“Spreadsheets are code!”
If you don’t immediately believe
me, I have three reasons*
* If you do believe me, skip the next 10 slides ;)
1) Used for similar problems
This tool (for stock price
computation) could have been
built in any language. C,
JavaScript, COBOL, or Excel.
The problems Excel is used for are
often (not always) similar to
problems solved in different
languages.
2) Formulas are Turing complete
2) Formulas are Turing complete
I go to great lengths to make my
point. To such great lengths that I
built a Turing machine in Excel,
using formulas only.
Here you see it in action. Every row
is an consecutive step of the lint.
This makes it, in addition to a proof
that formulas are Turing complete,
Also a nice visualization of a Turing
machine.
3) They suffer from the same problems
3) They suffer from the same problems
3) They suffer from the same problems
3) They suffer from the same problems
In summary: both the activities,
complexity and problems are the same
So if spreadsheets are code, can we
apply software engineering methods?
In software, tools have been created to
help programmers understand code
Speadsheets however, lack support
for testing, refactoring and code
analysis.
My goals is to bring those tools to
spreadsheets
In my dissertation, I defined smells
for spreadsheet formulas
www.felienne.com/publications
In my dissertation, I defined smells
for spreadsheet formulas
If you say smells
If you say smells, you say refactoring
So, we built BumbleBee:
a refactoring tool for spreadsheets
So, we built BumbleBee:
a refactoring tool for spreadsheets
You can download BumbleBee from
my website (felienne.com/BumbleBee)
The transformations are entirely
programmable, with a small language
And of course, if you say refactoring,
you say …
And of course, if you say refactoring,
you say testing
Spreadsheets tests are hiding in plain
sight
These test formulas are common,
and they can be exploited
Our tool Expector can find test formulas
Expector helps users to understand
robustness of their spreadsheets
Also available:
felienne.com/Expector
Thanks for viewing the slides for
Spreadsheets: are code!
Want to know more?
• Visit my sites
 felienne.com
 spreadsheetlab.org
• Send a tweet
 @felienne
• Send an email
mail@felienne.com

Mais conteúdo relacionado

Mais procurados

Excel Lesson 1: Excel Basics
Excel Lesson 1: Excel BasicsExcel Lesson 1: Excel Basics
Excel Lesson 1: Excel Basics
Novus Business and IT Training Program
 
Basics of Microsoft Word
Basics of Microsoft WordBasics of Microsoft Word
Basics of Microsoft Word
annakjones
 

Mais procurados (20)

Introducing Adobe Animate CC
Introducing Adobe Animate CCIntroducing Adobe Animate CC
Introducing Adobe Animate CC
 
Microsoft Office Excel
Microsoft Office ExcelMicrosoft Office Excel
Microsoft Office Excel
 
Microsoft To Do explained
Microsoft To Do explainedMicrosoft To Do explained
Microsoft To Do explained
 
ChatGPT Not just hype or a word on your buzzword bingo card
ChatGPT Not just hype or a word on your buzzword bingo cardChatGPT Not just hype or a word on your buzzword bingo card
ChatGPT Not just hype or a word on your buzzword bingo card
 
A Pragmatic AI Maturity Model
A Pragmatic AI Maturity ModelA Pragmatic AI Maturity Model
A Pragmatic AI Maturity Model
 
GitHub Copilot.pptx
GitHub Copilot.pptxGitHub Copilot.pptx
GitHub Copilot.pptx
 
4 Steps Toward Scientific A/B Testing
4 Steps Toward Scientific A/B Testing4 Steps Toward Scientific A/B Testing
4 Steps Toward Scientific A/B Testing
 
Excel Lesson 1: Excel Basics
Excel Lesson 1: Excel BasicsExcel Lesson 1: Excel Basics
Excel Lesson 1: Excel Basics
 
What is Artificial Intelligence ? (2023).pdf
What is Artificial Intelligence ? (2023).pdfWhat is Artificial Intelligence ? (2023).pdf
What is Artificial Intelligence ? (2023).pdf
 
Spreadsheet formulas ppt (1)
Spreadsheet formulas ppt (1)Spreadsheet formulas ppt (1)
Spreadsheet formulas ppt (1)
 
An introduction to vba and macros
An introduction to vba and macrosAn introduction to vba and macros
An introduction to vba and macros
 
Excel CountIf with Multiple Criteria
Excel CountIf with Multiple CriteriaExcel CountIf with Multiple Criteria
Excel CountIf with Multiple Criteria
 
Making Testing Easy w GitHub Copilot.pdf
Making Testing Easy w GitHub Copilot.pdfMaking Testing Easy w GitHub Copilot.pdf
Making Testing Easy w GitHub Copilot.pdf
 
Dokuwiki Manual
Dokuwiki ManualDokuwiki Manual
Dokuwiki Manual
 
Basics of Microsoft Word
Basics of Microsoft WordBasics of Microsoft Word
Basics of Microsoft Word
 
MS Access teaching powerpoint tasks
MS Access teaching powerpoint tasksMS Access teaching powerpoint tasks
MS Access teaching powerpoint tasks
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
Using macros in microsoft excel part 1
Using macros in microsoft excel   part 1Using macros in microsoft excel   part 1
Using macros in microsoft excel part 1
 
Get started with GitHub Copilot.pptx
Get started with GitHub Copilot.pptxGet started with GitHub Copilot.pptx
Get started with GitHub Copilot.pptx
 
Prompt Engineering Guide.pptx
Prompt Engineering Guide.pptxPrompt Engineering Guide.pptx
Prompt Engineering Guide.pptx
 

Destaque

An overview of my PhD research
An overview of my PhD researchAn overview of my PhD research
An overview of my PhD research
Felienne Hermans
 
Reverse Engineering Spreadsheets
Reverse Engineering SpreadsheetsReverse Engineering Spreadsheets
Reverse Engineering Spreadsheets
Devnology
 

Destaque (7)

An overview of my PhD research
An overview of my PhD researchAn overview of my PhD research
An overview of my PhD research
 
Spreadsheets for developers
Spreadsheets for developersSpreadsheets for developers
Spreadsheets for developers
 
TEDxDelft
TEDxDelftTEDxDelft
TEDxDelft
 
Reverse Engineering Spreadsheets
Reverse Engineering SpreadsheetsReverse Engineering Spreadsheets
Reverse Engineering Spreadsheets
 
Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?
 
The power of symmetry
The power of symmetryThe power of symmetry
The power of symmetry
 
55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9
 

Semelhante a Spreadsheets are code

Basics of Programming - A Review Guide
Basics of Programming - A Review GuideBasics of Programming - A Review Guide
Basics of Programming - A Review Guide
Benjamin Kissinger
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
Markus Voelter
 
UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwell
nikrao
 
UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwell
guestf59d1c4
 
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
eusprig
 

Semelhante a Spreadsheets are code (20)

6. spreadsheet are code
6. spreadsheet are code6. spreadsheet are code
6. spreadsheet are code
 
Improving Spreadsheet Test Practices
Improving Spreadsheet Test PracticesImproving Spreadsheet Test Practices
Improving Spreadsheet Test Practices
 
Basics of Programming - A Review Guide
Basics of Programming - A Review GuideBasics of Programming - A Review Guide
Basics of Programming - A Review Guide
 
Mastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loopsMastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loops
 
Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...
 
Rubykin
Rubykin Rubykin
Rubykin
 
Software Design
Software DesignSoftware Design
Software Design
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developer
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
Advanced java script essentials v1
Advanced java script essentials v1Advanced java script essentials v1
Advanced java script essentials v1
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
The D language comes to help
The D language comes to helpThe D language comes to help
The D language comes to help
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentals
 
UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwell
 
UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwell
 
Programming of c++
Programming of c++Programming of c++
Programming of c++
 
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
Testing and Refactoring Spreadsheets - Felienne Hermans at Eusprig 2014
 
Learn Programming with Livecoding.tv http://goo.gl/tIgO1I
Learn Programming with Livecoding.tv http://goo.gl/tIgO1ILearn Programming with Livecoding.tv http://goo.gl/tIgO1I
Learn Programming with Livecoding.tv http://goo.gl/tIgO1I
 
What do static analysis and search engines have in common? A good "top"!
What do static analysis and search engines have in common? A good "top"!What do static analysis and search engines have in common? A good "top"!
What do static analysis and search engines have in common? A good "top"!
 
Programming in C++
Programming in C++Programming in C++
Programming in C++
 

Mais de Felienne Hermans

Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?
Felienne Hermans
 

Mais de Felienne Hermans (13)

Using F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeUsing F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridge
 
Functional Programming in Excel
Functional Programming in ExcelFunctional Programming in Excel
Functional Programming in Excel
 
How does code sound?
How does code sound?How does code sound?
How does code sound?
 
Programming is logical reasoning?
Programming is logical reasoning?Programming is logical reasoning?
Programming is logical reasoning?
 
Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?
 
Programming by Calculation
Programming by CalculationProgramming by Calculation
Programming by Calculation
 
A board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversA board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solvers
 
Presenting: structure story and support
Presenting: structure story and supportPresenting: structure story and support
Presenting: structure story and support
 
Putting the science in computer science
Putting the science in computer sciencePutting the science in computer science
Putting the science in computer science
 
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
 
Social media for the busy scientist
Social media for the busy scientistSocial media for the busy scientist
Social media for the busy scientist
 
Detecting and Visualizing Inter-worksheet Smells in Spreadsheets
Detecting and Visualizing Inter-worksheet Smells in Spreadsheets Detecting and Visualizing Inter-worksheet Smells in Spreadsheets
Detecting and Visualizing Inter-worksheet Smells in Spreadsheets
 
Spreadsheet Testing
Spreadsheet TestingSpreadsheet Testing
Spreadsheet Testing
 

Spreadsheets are code