Lecture 0 - Course Introduction

Lecture 0 - Course Introduction

Transcript

  1. Програмиране с Ruby лекция 0 03 октомври 2012 Monday, October

    8, 12
  2. днес сме се събрали с една цел: Стефан Митьо Monday,

    October 8, 12
  3. ще се опитам да ви убедя да отпишете курса Monday,

    October 8, 12
  4. Страшен Monday, October 8, 12

  5. Труден Monday, October 8, 12

  6. Monday, October 8, 12

  7. Kimo's high expectations set a new pace for me. He

    taught me “the standard pace is for chumps” - that the system is designed so anyone can keep up. If you're more driven than “just anyone” - you can do so much more than anyone expects. — http://sivers.org/kimo Monday, October 8, 12
  8. “Трябва да има кръв и пот.” — @skanev Monday, October

    8, 12
  9. (имате ли Mac и iPhone/iPad/iPod?) Monday, October 8, 12

  10. административни въпроси Monday, October 8, 12

  11. 3 Monday, October 8, 12

  12. Monday, October 8, 12

  13. Ден Час Зала Понеделник 19:00 229 Сряда 19:00 325 Кога?

    Monday, October 8, 12
  14. http://fmi.ruby.bg/ Monday, October 8, 12

  15. http://fmi.ruby.bg/ (регистрации: скоро) Monday, October 8, 12

  16. @rbfmi Monday, October 8, 12

  17. facebook.com/groups/437194362990982/ Група “Програмиране с Ruby” Monday, October 8, 12

  18. Monday, October 8, 12

  19. Четвъртата “лекция” от курса ще се проведе на “по бира”.

    Датата е 15 октомври. Мястото вероятно е RockIT. Monday, October 8, 12
  20. оценяване Monday, October 8, 12

  21. всичко се върти около точки Monday, October 8, 12

  22. Max 6 5 4 3 Скалата Monday, October 8, 12

  23. Задачи 60 Тестове 60 Проект 60 Задължителните Monday, October 8,

    12
  24. Задачите Monday, October 8, 12

  25. Задачите • десет броя Monday, October 8, 12

  26. Задачите • десет броя • предават се онлайн Monday, October

    8, 12
  27. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично Monday, October 8, 12
  28. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • 0-6 точки Monday, October 8, 12
  29. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • 0-6 точки • могат да дават допълнителни точки Monday, October 8, 12
  30. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • 0-6 точки • могат да дават допълнителни точки • имате право да пропуснете три Monday, October 8, 12
  31. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • 0-6 точки • могат да дават допълнителни точки • имате право да пропуснете три • чуждите решения са публични Monday, October 8, 12
  32. Тестове Monday, October 8, 12

  33. Тестове • два броя Monday, October 8, 12

  34. Тестове • два броя • 30 въпроса за един час

    Monday, October 8, 12
  35. Тестове • два броя • 30 въпроса за един час

    • 30 точки всеки Monday, October 8, 12
  36. Проекти Monday, October 8, 12

  37. Проекти • на края на семестъра Monday, October 8, 12

  38. Проекти • на края на семестъра • вие измисляте или

    ние избираме Monday, October 8, 12
  39. Проекти • на края на семестъра • вие измисляте или

    ние избираме • 60 точки Monday, October 8, 12
  40. Проекти • на края на семестъра • вие измисляте или

    ние избираме • 60 точки • 30 за стил, 30 за тестове Monday, October 8, 12
  41. Проекти • на края на семестъра • вие измисляте или

    ние избираме • 60 точки • 30 за стил, 30 за тестове • да работят е задължително, но не достатъчно Monday, October 8, 12
  42. има и други начини да изкарвате точки Monday, October 8,

    12
  43. Участие в час Monday, October 8, 12

  44. Участие в час • някой знае ли защо държа Snickers?

    Monday, October 8, 12
  45. Участие в час • някой знае ли защо държа Snickers?

    • обикновено на тях има код, който ви носи 1 точка Monday, October 8, 12
  46. Участие в час • някой знае ли защо държа Snickers?

    • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час Monday, October 8, 12
  47. Участие в час • някой знае ли защо държа Snickers?

    • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час • получивате ги за добро включване в час Monday, October 8, 12
  48. Участие в час • някой знае ли защо държа Snickers?

    • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час • получивате ги за добро включване в час • например: въпрос, отговор или коментар Monday, October 8, 12
  49. Участие в час • някой знае ли защо държа Snickers?

    • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час • получивате ги за добро включване в час • например: въпрос, отговор или коментар • ако прекалите с глупостите ще хванете захарна болест Monday, October 8, 12
  50. Участие в сайта Monday, October 8, 12

  51. Участие в сайта • добър пост във форумите Monday, October

    8, 12
  52. Участие в сайта • добър пост във форумите • добър

    коментар на чуждо решение Monday, October 8, 12
  53. Помощ с материалите Monday, October 8, 12

  54. Помощ с материалите • лекциите са OpenSource Monday, October 8,

    12
  55. Помощ с материалите • лекциите са OpenSource • оправяне на

    грешки Monday, October 8, 12
  56. Помощ с материалите • лекциите са OpenSource • оправяне на

    грешки • примери от лекциите Monday, October 8, 12
  57. Помощ с материалите • лекциите са OpenSource • оправяне на

    грешки • примери от лекциите • ваши допълнения Monday, October 8, 12
  58. Challenges * под “мързи” имаме предвид “не можем” Monday, October

    8, 12
  59. Challenges • малка задачки относително често * под “мързи” имаме

    предвид “не можем” Monday, October 8, 12
  60. Challenges • малка задачки относително често • малки: 4-10 реда

    код * под “мързи” имаме предвид “не можем” Monday, October 8, 12
  61. Challenges • малка задачки относително често • малки: 4-10 реда

    код • често: 2-3 пъти в седмицата * под “мързи” имаме предвид “не можем” Monday, October 8, 12
  62. Challenges • малка задачки относително често • малки: 4-10 реда

    код • често: 2-3 пъти в седмицата • имате 24 часа за всяка * под “мързи” имаме предвид “не можем” Monday, October 8, 12
  63. Challenges • малка задачки относително често • малки: 4-10 реда

    код • често: 2-3 пъти в седмицата • имате 24 часа за всяка (понеже ни мързи* да измислим хубаво име) * под “мързи” имаме предвид “не можем” Monday, October 8, 12
  64. Tip of the Day Monday, October 8, 12

  65. Tip of the Day • кратки полезни Ruby съвети Monday,

    October 8, 12
  66. Tip of the Day • кратки полезни Ruby съвети •

    няма да се всеки ден Monday, October 8, 12
  67. Tip of the Day • кратки полезни Ruby съвети •

    няма да се всеки ден • обикновено ги публикуваме ние Monday, October 8, 12
  68. Tip of the Day • кратки полезни Ruby съвети •

    няма да се всеки ден • обикновено ги публикуваме ние • може да изпращате и ваши Monday, October 8, 12
  69. И други... Monday, October 8, 12

  70. защо правим всичко това? Monday, October 8, 12

  71. точките рефлектират участието ви в курса Monday, October 8, 12

  72. Вие имате ли идеи? Monday, October 8, 12

  73. въпроси? Monday, October 8, 12

  74. before_filter :get_current_year def get_current_year @current_year = 2011 end Лош код

    Monday, October 8, 12
  75. 3-4 ноември Monday, October 8, 12

  76. за какво ще говорим в курса? Monday, October 8, 12

  77. Monday, October 8, 12

  78. в дълбочина Monday, October 8, 12

  79. в дълбочина няма да сме повърхностни Monday, October 8, 12

  80. в дълбочина няма да сме повърхностни всички language feature-и Monday,

    October 8, 12
  81. в дълбочина няма да сме повърхностни всички language feature-и идиоми

    Monday, October 8, 12
  82. в дълбочина няма да сме повърхностни всички language feature-и идиоми

    екосистема Monday, October 8, 12
  83. Добър код Monday, October 8, 12

  84. Добър код Monday, October 8, 12

  85. “Besides a mathematical inclination, an exceptionally good mastery of one's

    native tongue is the most vital asset of a competent programmer.” — Edsger Dijkstra* * изобретател на blog post-а Monday, October 8, 12
  86. “Programs must be written for people to read, and only

    incidentally for machines to execute.” — H. Abelson and G. Sussman Monday, October 8, 12
  87. Monday, October 8, 12

  88. принципи Monday, October 8, 12

  89. SOLID Monday, October 8, 12

  90. Single Responsibility Principle Open-Closed Principle Liskov Substitution Principle Interface Segregation

    Principle Dependency Inversion Principle Monday, October 8, 12
  91. Law of Demeter Monday, October 8, 12

  92. Single Level of Abstraction Principle (SLAP) Monday, October 8, 12

  93. Expression Problem Monday, October 8, 12

  94. Практики Monday, October 8, 12

  95. Version Control Monday, October 8, 12

  96. Refactoring Monday, October 8, 12

  97. Test-Driven Development Monday, October 8, 12

  98. Monday, October 8, 12

  99. web framework Monday, October 8, 12

  100. web framework най-популярното нещо в Ruby Monday, October 8, 12

  101. web framework най-популярното нещо в Ruby ще говорим най-накрая (3-4

    лекции) Monday, October 8, 12
  102. web framework най-популярното нещо в Ruby ще говорим най-накрая (3-4

    лекции) (ОК за проекти, но трябва да одобрим) Monday, October 8, 12
  103. вместо това: ред малки библиотеки Monday, October 8, 12

  104. Тежките ограничения максимум X реда код в метод максимум Х

    нива на влагане в метод максимум Х метода в клас Monday, October 8, 12
  105. Тежките ограничения максимум 10 реда код в метод максимум 3

    нива на влагане в метод максимум 7 метода в клас Monday, October 8, 12
  106. Monday, October 8, 12

  107. “Дялкам камъни” Monday, October 8, 12

  108. “Храня жената и децата” Monday, October 8, 12

  109. “Строя катедрали” Monday, October 8, 12

  110. В този курс ще се учим как се дялкат камъни,

    а не как се строят катедрали. Monday, October 8, 12
  111. за Ruby Monday, October 8, 12

  112. Yukihiro “Matz” Matsumoto Monday, October 8, 12

  113. designed for programmer productivity and fun Monday, October 8, 12

  114. Brevity Simplicity Balance “Treating Code as an Essay” Monday, October

    8, 12
  115. характеристики Monday, October 8, 12

  116. динамичен Monday, October 8, 12

  117. $ cat hello.rb puts "Hello world!" forty_two = 6 *

    9 puts "The answer is #{forty_two}" $ ruby hello.rb Hello world! The answer to is 54 интерпретира се Monday, October 8, 12
  118. general purpose много web библиотеки Monday, October 8, 12

  119. обектно-ориентиран с функционални елементи Monday, October 8, 12

  120. вдъхновен от: Perl, Smalltalk, Python, Lisp Monday, October 8, 12

  121. култура Monday, October 8, 12

  122. open source! Monday, October 8, 12

  123. $ gem install rails Monday, October 8, 12

  124. 44 982 библиотеки тази сутрин (миналата година бяха 29 245)

    Monday, October 8, 12
  125. 133 923 хранилища, 50 491 потребителя (миналата година бяха 133

    923 хранилища, 50 491 потребителя) Monday, October 8, 12
  126. community Monday, October 8, 12

  127. Monday, October 8, 12

  128. много блогове Monday, October 8, 12

  129. много много много много много блогове Monday, October 8, 12

  130. screencasts & podcasts Monday, October 8, 12

  131. колорит Monday, October 8, 12

  132. _why the lucky stiff Monday, October 8, 12

  133. Monday, October 8, 12

  134. elitism Monday, October 8, 12

  135. David Heinemeir Hanson (автор на Rails) Monday, October 8, 12

  136. David Heinemeir Hanson Monday, October 8, 12

  137. през 2012: зрялост Monday, October 8, 12

  138. иновация Monday, October 8, 12

  139. nokogiri sequel rspec capybara sinatra lolcat Monday, October 8, 12

  140. GitHub Monday, October 8, 12

  141. кой ползва Ruby? Monday, October 8, 12

  142. Twitter Monday, October 8, 12

  143. GitHub Monday, October 8, 12

  144. Shopify Monday, October 8, 12

  145. SoundCloud Monday, October 8, 12

  146. SongKick Monday, October 8, 12

  147. Groupon Monday, October 8, 12

  148. Urban Dictionary Monday, October 8, 12

  149. версии и интерпретатори Monday, October 8, 12

  150. 1.8 vs 1.9 Monday, October 8, 12

  151. ще ползваме само 1.9 Monday, October 8, 12

  152. JRuby IronRuby Rubinius MacRuby Monday, October 8, 12

  153. ресурси Monday, October 8, 12

  154. why’s poignant guide to Ruby http://mislav.uniqpath.com/poignant-guide/ Monday, October 8, 12

  155. Programming Ruby 1.9 Monday, October 8, 12

  156. The Ruby Programming Language Monday, October 8, 12

  157. Ruby Best Practices Monday, October 8, 12

  158. Monday, October 8, 12

  159. малко код Monday, October 8, 12

  160. # Output "I love Ruby" say = "I love Ruby"

    puts say # Output "I *LOVE* RUBY" say['love'] = "*love*" puts say.upcase # Output "I *love* Ruby" # five times 5.times { puts say } днес на http://ruby-lang.org/ Monday, October 8, 12
  161. (1..9).select { |x| x.odd? }.map { |x| x ** 2

    } Monday, October 8, 12
  162. 1.upto(10).inject { |a, b| a * b } Monday, October

    8, 12
  163. def factorial(n) 1.upto(n).inject { |a, b| a * b }

    end puts factorial(10) Monday, October 8, 12
  164. class Integer def factorial 1.upto(self).inject { |a, b| a *

    b } end end puts 10.factorial Monday, October 8, 12
  165. def prime?(n) 2.upto(n - 1).all? { |a| n.remainder(a).nonzero? } end

    puts prime?(13) puts prime?(42) Monday, October 8, 12
  166. class Integer def prime? 2.upto(pred).all? { |a| remainder(a).nonzero? } end

    end puts 13.prime? puts 42.prime? Monday, October 8, 12
  167. въпроси? Monday, October 8, 12