Програмиране с Ruby 2014, лекция 0

Програмиране с Ruby 2014, лекция 0

Уводна лекция за курса "Програмиране с Ruby", който се води във ФМИ към СУ през учебната 2014/15 г. Повече информация: http://fmi.ruby.bg/

Transcript

  1. Програмиране с Ruby лекция 0 01 октомври 2014

  2. Александър Героги А. Георги Г. Марио Митьо Никола Николай Сава

    Станислав Стефан Христо И други...
  3. И нашата цел днес е...

  4. Да ви убедим да отпишете курса

  5. None
  6. None
  7. “Трябва да има кръв и пот.” — @skanev

  8. И същевременно…

  9. Engaging & Inclusive

  10. Две целеви групи: 1. По-напреднали и по-“лакоми” за информация 2.

    Студенти с минимални познания, опит и понякога – демотивирани
  11. Искаме да адресираме и двете групи

  12. Няма да стане без вашата помощ

  13. Помагай на другарчето

  14. Задавай въпроси
 Не се отказвай

  15. административни въпроси

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

  17. http://fmi.ruby.bg/

  18. http://fmi.ruby.bg/ Регистрацията е отворена.

  19. Записване с молба fmi@ruby.bg

  20. Записване с молба Става, но трябва да ни пишете, fmi@ruby.bg

  21. Записване с молба Става, но трябва да ни пишете, ако

    ви няма в СУСИ – fmi@ruby.bg
  22. Записване с молба Става, но трябва да ни пишете, ако

    ви няма в СУСИ – три имена и факултетен номер fmi@ruby.bg
  23. Свободен достъп

  24. Анкета на сайта След регистрация

  25. fmi@ruby.bg

  26. Група “Програмиране с Ruby” https://facebook.com/groups/programming.ruby/

  27. @rbfmi

  28. None
  29. “Лекция” на “по бира” (подробности скоро)

  30. Code Jam Session

  31. оценяване

  32. Скалата

  33. Задължителните

  34. Задачите

  35. Задачите • десет броя

  36. Задачите • десет броя • предават се онлайн

  37. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично
  38. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • обикновено 0-6 точки
  39. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • обикновено 0-6 точки • могат да дават допълнителни точки
  40. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • обикновено 0-6 точки • могат да дават допълнителни точки • има и наказателни точки
  41. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • обикновено 0-6 точки • могат да дават допълнителни точки • има и наказателни точки • имате право да пропуснете три
  42. Задачите • десет броя • предават се онлайн • проверяват

    се автоматично • обикновено 0-6 точки • могат да дават допълнителни точки • има и наказателни точки • имате право да пропуснете три • чуждите решения са публични
  43. Тестове

  44. Тестове • два броя

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

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

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

    • 30 точки на тест • много гнусни, но не са критични за оценката
  48. Проекти

  49. Проекти • на края на семестъра

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

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

    ние избираме • 60 точки
  52. Проекти • на края на семестъра • вие измисляте или

    ние избираме • 60 точки • 1/3 функционалност, 1/3 стил, 1/3 тестове
  53. Проекти • на края на семестъра • вие измисляте или

    ние избираме • 60 точки • 1/3 функционалност, 1/3 стил, 1/3 тестове • да работят е задължително, но не достатъчно
  54. Бонуси

  55. Бонуси • Предизвикателства

  56. Бонуси • Предизвикателства • Участие в час

  57. Бонуси • Предизвикателства • Участие в час • Участие във

    форумите (помощ на другарчето)
  58. Бонуси • Предизвикателства • Участие в час • Участие във

    форумите (помощ на другарчето) • Бонус точки за елегантни решения
  59. Бонуси • Предизвикателства • Участие в час • Участие във

    форумите (помощ на другарчето) • Бонус точки за елегантни решения • Принос в GitHub
  60. Бонуси • Предизвикателства • Участие в час • Участие във

    форумите (помощ на другарчето) • Бонус точки за елегантни решения • Принос в GitHub • Изнасяне на кратка презентация по време на курса
  61. Участие в час

  62. Участие в час • даваме Snickers за добри въпроси, отговори

    или коментари
  63. Участие в час • даваме Snickers за добри въпроси, отговори

    или коментари • обикновено на тях има код, който ви носи 1 точка
  64. Участие в час • даваме Snickers за добри въпроси, отговори

    или коментари • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час
  65. Участие в час • даваме Snickers за добри въпроси, отговори

    или коментари • обикновено на тях има код, който ви носи 1 точка • насърчават да не спите в час • ако прекалите с глупостите ще хванете захарна болест
  66. Предизвикателства

  67. Предизвикателства • малка задачки относително често

  68. Предизвикателства • малка задачки относително често • малки: 4-10 реда

    код
  69. Предизвикателства • малка задачки относително често • малки: 4-10 реда

    код • често: 1-2 пъти в седмицата
  70. Предизвикателства • малка задачки относително често • малки: 4-10 реда

    код • често: 1-2 пъти в седмицата • ще имате около 24 часа за всяко
  71. Тежките ограничения максимум X реда код в метод максимум Х

    нива на влагане в метод максимум Х метода в клас
  72. Тежките ограничения максимум 7 реда код в метод максимум 2

    нива на влагане в метод максимум 10 метода в клас
  73. Тежките ограничения спазване на конвенциите на езика само валидни английски

    думи за именуване
  74. Строги конвенции и стил

  75. В края оценяваме усилия

  76. за какво ще говорим в курса?

  77. 1. Език за програмиране

  78. 2. Принципи

  79. None
  80. в дълбочина

  81. в дълбочина няма да сме повърхностни

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

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

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

    екосистема
  85. Добър код

  86. Добър код

  87. “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-а
  88. “Programs must be written for people to read, and only

    incidentally for machines to execute.” ! — H. Abelson and G. Sussman
  89. None
  90. Принципи

  91. SOLID

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

    Principle Dependency Inversion Principle
  93. Law of Demeter

  94. Single Level of Abstraction Principle (SLAP)

  95. Практики

  96. Refactoring

  97. Test-Driven Development

  98. None
  99. web framework

  100. web framework най-популярното нещо в Ruby

  101. web framework най-популярното нещо в Ruby няма да говорим за

    него
  102. web framework най-популярното нещо в Ruby няма да говорим за

    него (или поне най-много лекция-две)
  103. вместо това: ред малки библиотеки

  104. None
  105. “Дялкам камъни”

  106. “Строя катедрали”

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

    а не как се строят катедрали.
  108. за Ruby

  109. Yukihiro “Matz” Matsumoto

  110. designed for programmer productivity and fun

  111. Brevity Simplicity Balance “Treating Code as an Essay”

  112. характеристики

  113. динамичен

  114. $ 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 интерпретира се
  115. general purpose много web библиотеки

  116. обектно-ориентиран с функционални елементи

  117. вдъхновен от: Perl, Smalltalk, Python, Lisp

  118. култура

  119. open source!

  120. $ gem install rails

  121. близо 90 000 библиотеки днес

  122. community

  123. None
  124. много блогове

  125. много много много много много блогове

  126. screencasts & podcasts

  127. колорит

  128. _why the lucky stiff

  129. None
  130. elitism

  131. David Heinemeir Hanson (автор на Rails)

  132. David Heinemeir Hanson

  133. през 2011: зрялост

  134. през 2011: зрялост Този слайд е отпреди 3 години. :)

  135. иновация

  136. GitHub

  137. кой ползва Ruby?

  138. Twitter

  139. GitHub

  140. Shopify

  141. SoundCloud

  142. SongKick

  143. Groupon

  144. Urban Dictionary

  145. Новини на сайта (има RSS feed)

  146. Rails проекти – забранени

  147. Въпроси, диалог и обратна връзка

  148. версии и интерпретатори

  149. 1.8 vs 1.9 vs 2.0 vs 2.1

  150. ще ползваме само 2.1 и по-нови

  151. Текущата най-нова е 2.1.3

  152. JRuby Rubinius IronRuby MacRuby + още 50-ина...

  153. ресурси

  154. Programming Ruby 1.9 and 2.0

  155. Metaprogramming Ruby 2

  156. why’s poignant guide to Ruby http://mislav.uniqpath.com/poignant-guide/

  157. малко код

  158. # 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/
  159. None
  160. (1..9).select { |x| x.odd? }.map { |x| x ** 2

    }
  161. (1..9).select { |x| x.odd? }.map { |x| x ** 2

    } (1..9).select(&:odd?).map { |x| x ** 2 }
  162. 1.upto(10).inject { |a, b| a * b }

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


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

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


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


    end
 
 puts 13.prime?
 puts 42.prime?
  167. Какво следва?

  168. Още днес

  169. Още днес • Регистрирайте се на сайта: http://fmi.ruby.bg/

  170. Още днес • Регистрирайте се на сайта: http://fmi.ruby.bg/ • Качете

    си профилна снимка
  171. Още днес • Регистрирайте се на сайта: http://fmi.ruby.bg/ • Качете

    си профилна снимка • Попълнете анкетата
  172. Още днес • Регистрирайте се на сайта: http://fmi.ruby.bg/ • Качете

    си профилна снимка • Попълнете анкетата • Инсталирайте си Ruby 2.1.3
  173. Core Ruby @ Hack Bulgaria Програмиране с Ruby @ ФМИ

    +
  174. въпроси?

  175. shteglasuvam.com