The Case for (Scheme)

458 views
370 views

Published on

The mobile market explodes. I have an idea for this awesome app. It connects people together with their phones in a way nobody's thought of yet. Ok, so I'm going to write three native apps: one in Java, one in Objective-C, another in .Net. I need the same logic on my server, except, well, 64-bit enabled. I need the same validation logic there, oh no! Wait, I need a web version of the app, too? Business logic in the front end? How many times do I need to write this damned thing? This is not why I started programming. I wanted to by a sky pirate! There's got to be a better way… Wait. Hrmm. We could get Phone Gap or maybe use Flex. Ugh. That's sluggish and the app doesn't look right and, crap, I still can't run Flex on the server. Still no dice. If only there was a way to take my business logic with me, to whatever technology I needed… If only I could not decide right now all the technologies I'd ever support...

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
458
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

The Case for (Scheme)

  1. 1. The Case for (Scheme)Jason Felice@eraserhdhttp://maitria.com/Monday, May 6, 13
  2. 2. A Mobile PlatformWalled GardenA ProprietorMonday, May 6, 13
  3. 3. A Mobile PlatformAppleXcodeGoogleAndroid SDKMicrosoftVisual StudioBlackberry ??RIMMonday, May 6, 13
  4. 4. TeamsAndroidiOSWindowsWebBack-endMonday, May 6, 13
  5. 5. Platform TeamsMonday, May 6, 13
  6. 6. SteeringMonday, May 6, 13
  7. 7. Monday, May 6, 13
  8. 8. Hrmm...• One feature at a time.• Implement on every platform.• Simultaneously release them all.Monday, May 6, 13
  9. 9. Work on ALL the AppsMonday, May 6, 13
  10. 10. Monday, May 6, 13
  11. 11. (Scheme)GambitKawaGuile CJVMCLRJavascriptIronSchemeScheme2JsFargoSpockBiglooMonday, May 6, 13
  12. 12. SICPMonday, May 6, 13
  13. 13. Structure(Scheme)Native InterfaceNative InterfaceNative InterfaceNative InterfaceNative InterfaceMonday, May 6, 13
  14. 14. Monday, May 6, 13
  15. 15. Because
  16. 16.  we
  17. 17.  care
  18. 18.  about
  19. 19.  beautiful
  20. 20.  codewe
  21. 21.  hack
  22. 22.  with
  23. 23.  intentionBecause
  24. 24.  we
  25. 25.  care
  26. 26.  about
  27. 27.  geek
  28. 28.  joywe
  29. 29.  encourage
  30. 30.  geeks
  31. 31.  to
  32. 32.  code
  33. 33.  from
  34. 34.  the
  35. 35.  heartBecause
  36. 36.  we
  37. 37.  care
  38. 38.  about
  39. 39.  whats
  40. 40.  alive
  41. 41.  in
  42. 42.  the
  43. 43.  people
  44. 44.  we
  45. 45.  touchwe
  46. 46.  speak
  47. 47.  and
  48. 48.  listen
  49. 49.  with
  50. 50.  courageous
  51. 51.  curiosityBecause
  52. 52.  we
  53. 53.  care
  54. 54.  about
  55. 55.  what
  56. 56.  emerges
  57. 57.  when
  58. 58.  we
  59. 59.  collaboratewe
  60. 60.  show
  61. 61.  up
  62. 62.  with
  63. 63.  confident
  64. 64.  humilitymaitria.comMonday, May 6, 13
  65. 65. Damn Parentheses!(let loop ((i 0))(cond((= i 10)#f)(else(display i)(loop (+ i 1)))))Monday, May 6, 13
  66. 66. Damn Parentheses!if ((self = [superinitWithNibName:[[self class]description]bundle:[NSBundlebundleForClass:[self class]]])) {...}Monday, May 6, 13
  67. 67. Hello,World!(display Hello, World!)(newline)Monday, May 6, 13
  68. 68. Hello,World!(define (say-hello)(display Hello, World!)(newline))(say-hello)Monday, May 6, 13
  69. 69. Hello,World!(define (say-hello)(display Hello, World!)(newline))(say-hello)Monday, May 6, 13
  70. 70. Hello,World!(define (say-hello)(display Hello, World!)(newline))(say-hello)Monday, May 6, 13
  71. 71. factorial5! =5 * 4 * 3 * 2 * 1n! =n * (n - 1) * (n - 2) * ... * 1Monday, May 6, 13
  72. 72. factorialn! ={ 1, n=1n(n-1)!, n11! = 15! = 5•4!Monday, May 6, 13
  73. 73. Monday, May 6, 13
  74. 74. factorial(define (factorial n)(if (= n 1)1(* n (factorial (- n 1))))Monday, May 6, 13
  75. 75. factorial(define (factorial n)(if (= n 1)1(* n (factorial (- n 1))))Monday, May 6, 13
  76. 76. factorial(define (factorial n)(if (= n 1)1(* n (factorial (- n 1))))Monday, May 6, 13
  77. 77. factorial(define (factorial n)(if (= n 1)1(* n (factorial (- n 1))))Monday, May 6, 13
  78. 78. factorial(define (factorial n)(if (= n 1)1(* n (factorial (- n 1))))Monday, May 6, 13
  79. 79. Lists(1 2 3)Monday, May 6, 13
  80. 80. Lists(1 2 3)1 2 3()Monday, May 6, 13
  81. 81. Pairs(1 . 2)12Monday, May 6, 13
  82. 82. Pairs(1 . 2)12carMonday, May 6, 13
  83. 83. Pairs(1 . 2)12carcdrMonday, May 6, 13
  84. 84. Monday, May 6, 13
  85. 85. Lists(1 . (2 . (3 . ())))1 2 3()Monday, May 6, 13
  86. 86. Lists(1 . (2 . (3 . ())))1 2 3()Monday, May 6, 13
  87. 87. (1 . (2 . (3 . ())))Lists1 2 3()Monday, May 6, 13
  88. 88. Lists(1 . (2 . (3 . ())))1 2 3()Monday, May 6, 13
  89. 89. Code is Data(sqrt (+ (* x x) (* y y)))Monday, May 6, 13
  90. 90. Code is Data(sqrt (+ (* x x) (* y y)))sqrt()+()* x x()* y y()Monday, May 6, 13
  91. 91. Data is Code(define x 7)(define y 4)(define x2 (list * x x))(define y2 (list * y y))(define x2+y2 (list + x2 y2))(define hypot (list sqrt x2+y2))(eval hypot) = 8.06225774829855Monday, May 6, 13
  92. 92. Monday, May 6, 13
  93. 93. (on (collision (ice-block? b) (ice-hole? h))(in-succession(remove-object b)(simultaneously(play-sound splunk)(animate h block-melts-into-ice-hole))(remove-object h)))Monday, May 6, 13
  94. 94. (animation “helper-slides-south”(play-frames (1 .. 5) for: 0.3)(repeat(play-frames (6 7) for: 0.2)(play-frames (8 .. 10) for: 0.2))Monday, May 6, 13
  95. 95. Monday, May 6, 13

×