Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spreadsheets for developers

19,552 views

Published on

Spreadsheets are often dismissed by developers for not being "proper programming" but that is not true. Since I have shown that spreadsheets are Turing complete, you have no excuse to diss them any longer. In this session, I will implement various algorithms in Excel to show you its power and elegance. After all, spreadsheets are 'live' and functional, so they have everything going for them! Furthermore they are very fit for TDD and rapid prototyping.

Don't fight spreadsheets any longer, but learn to love them.

Published in: Engineering, Technology
  • Unlock Her Legs�(Official) $69 | Get 90% Off + 8 Special Bonus? ★★★ http://ishbv.com/unlockher/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • //DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... //DOWNLOAD PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... //DOWNLOAD EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... //DOWNLOAD doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... //DOWNLOAD PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... //DOWNLOAD EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... //DOWNLOAD doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • nice, find more latest PPTs on www.ThesisScientist.com.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Spreadsheets for developers

  1. Spreadsheets for developers Felienne Hermans
  2. So you are a developer? Why should you bother to learn spreadsheets? In this deck, I explain you why.
  3. So you are a developer? Why should you bother to learn spreadsheets? In this deck, I explain you why. People often think about spreadsheets as data, but that is a gross misslabeling.
  4. Spreadsheets are code
  5. Spreadsheets are code I have made it my life’s work to spread the happy word “Spreadsheets are code!”
  6. 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 ;)
  7. Spreadsheets are code
  8. 1) Used for similar problems
  9. 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.
  10. I go to great lengths to make my point. To such great lengths that I built a Turing machine in Excel, using formulas only.
  11. Here you see it in action. Every row is an consecutive step of the tape. This makes it, in addition to a proof that formulas are Turing complete, Also a nice visualization of a Turing machine.
  12. Here you see it in action. Every row is an consecutive step of the tape. This makes it, in addition to a proof that formulas are Turing complete, Also a nice visualization of a Turing machine. Many people liked it :) 2) Formulas are Turing complete
  13. Finally, spreadsheets suffer from typicial ‘software’ problems like lack of documentation and a long lifespan during which many different users are involved. 3) They suffer from the same problems
  14. Spreadsheets are code In summary: both the activities, complexity and problems are the same
  15. And not just a programming language!
  16. Resistance is futile!
  17. Stukje Bret Victor hier Spreadsheet are ‘live programming’ avant la lettre. What Bret Victor is been advocating for lately, we had that since VisiCalc! Just type up your formula and you will get the result immediately.
  18. You love pure functional languages?
  19. You love pure functional languages? We’ve got you covered. All a formula can do is take input and do something with it. No side effects possible.
  20. Finally, spreadsheets are the lingua franca of computing. You grandfather probably knows how to put a spreadsheet together for his savings. Your next door neighbour? Uses it for his fantasy football league. That history major you are helping out with his math work? I am sure he out-pivot tables you! Everyone knows this, expect for developers! That’s just crazy!
  21. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power.
  22. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front:
  23. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front: 7-8-3-1-12-15
  24. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front: 7-8-3-1-12-15 | 1 is the minimum, swap it with 7
  25. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front: 1-8-3-7-12-15 | 1 is the minimum, swap it with 7
  26. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front: 1-8-3-7-12-15 | Now 3 is the minimum, swap it with 8
  27. I am just going to assume you are convinced and you want to learn spreadsheets. Therefore, I’ll implement selection sort in a spreadsheet to show you their power. To refresh your memory: selection sort sorts a list by repeatedly selecting the smallest value and putting it in the front: 1-3-8-7-12-15 | Rinse and repeat
  28. MATCH takes as arguments: the search value, the range to search in and the type of match (exact or bigger/smaller)
  29. MATCH results in 10: the minimum is found on index 10
  30. Let’s start small and make a formula that places an “X" in the swap spots
  31. So: if our index is equal to the index of the minimum, we swap (X) otherwise we do nothing (_) Let’s start small and make a formula that places an “X" in the swap spots
  32. So: if our index is equal to the index of the minimum, we swap (X) otherwise we do nothing (_) That looks cool, let’s drag it right
  33. Awww... Something went wrong!
  34. By default, Excel transforms formulas by location, so this one is changed incorrectly
  35. If we do not want that, we add a $ before a reference to fix it. Now, only the row is updated
  36. If we do not want that, we add a $ before a reference to fix it. Now, only the row is updated Let’s try dragging again
  37. Let’s also fix the index row here, because we are dragging all this down later
  38. We will swap based on the index, starting at 1
  39. INDEX takes as arguments: the range to locate a value in, followed by the row and column
  40. INDEX takes as arguments: the range to locate a value in, followed by the row and column We use row 1 (as we are looking in only one row) and the column in B4 (the index of the swap)
  41. With this, we can edit the second branch of the if, to add the second swap situation
  42. With this, we can edit the second branch of the if, to add the second swap situation We also swap is the index is equal to the ‘swap index’
  43. Let’s fill in the easiest blank first, the _ In case we do not swap, we can just use the value above
  44. Let’s fill in the easiest blank first, the _ In case we do not swap, we can just use the value above
  45. So what goes on this spot? If the index is equal to the swap spot...
  46. So what goes on this spot? If the index is equal to the swap spot, we output the minimum
  47. And if the index is swap, we output the swap value
  48. Looks like we are ready to draw all formulas down
  49. 1 is picked as minimum everywhere
  50. 1 is picked as minimum everywhere This range needs to shift right every step
  51. We can use the OFFSET function for that
  52. We can use the OFFSET function for that OFFSET takes as arguments: the range you want to shift, followed by number of rows and number of columns
  53. We can use the OFFSET function for that OFFSET takes as arguments: the range you want to shift, followed by number of rows and number of columns
  54. = Range1 Range2 results in a referece to the intersection of the two ranges. In this case C5 with value 3.
  55. = Range1 Range2 results in a referece to the intersection of the two ranges. In this case C5 with value 3.
  56. A2:B7
  57. But we can also name:
  58. But we can also name: strings
  59. But we can name funkier stuff, let’s stick with the love theme!
  60. This too can be expressed with a named range
  61. Named ranges got you covered again!
  62. What we want now, is to refer to the cell in C4, and then increase its value
  63. ROW(cell) results in the row of a cell, for example ROW(A8) = 8 Without arguments ROW returns the current row. What we want now, is to refer to the cell in C4, and then increase its value We can use the ROW for that
  64. ROW(cell) results in the row of a cell, for example ROW(A8) = 8 Without arguments ROW returns the current row. 3 in this case What we want now, is to refer to the cell in C4, and then increase its value We can use the ROW for that
  65. INDIRECT turns a string into a reference, and is in that sense similar to the ‘eval’ of JavaScript
  66. For comparison, I have written selection sort in Python
  67. Because SE methods transfer so well, after my graduation, I built a spreadsheet refactoring tool called BumbleBee.
  68. Because SE methods transfer so well, after my graduation, I built a spreadsheet refactoring tool called BumbleBee. Here you see the user interface in Excel 2010.
  69. And of course, if you say refactoring...
  70. And of course, if you say refactoring, you say testing! When users modify their spreadsheet, theywant to be sure the fuinctionality of their spreadsheets remains the same. But how to get end-users to test? This is already hard for professional developers!
  71. And of course, if you say refactoring, you say testing! When users modify their spreadsheet, theywant to be sure the fuinctionality of their spreadsheets remains the same. But how to get end-users to test? This is already hard for professional developers! But spreadsheet users are already good testers!
  72. Also available: felienne.com/Expector
  73. That’s all folks! Thanks for watching my talk on SlideShare! Don’t forget that: More info? • www.felienne.com • www.spreadsheetlab.org Want to connect? • @felienne • mail@felienne.com

×