Programming Ruby @ FMI

Programming Ruby @ FMI

E1873b75f09c042ef07fe136ba2446f6?s=128

Georgy Angelov

October 05, 2016
Tweet

Transcript

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

  2. Рекурентни Уравнения от Биномни Интеграли

  3. = ∭ $%&' ()*+,-./01 *** 23) lim 7→9 ∑ ∯

    7 2'$ℵ
  4. puts "lol jk"

  5. Ние сме…

  6. Александър Георги Димитър Кирчо Марио Никола Радо Сава Стефан Христо

    Цецо И други…
  7. И нашата цел днес е...

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

  9. None
  10. None
  11. “Трябва да има кръв и пот.” — Стефан Кънев

  12. None
  13. И същевременно…

  14. Engaging & Inclusive

  15. Ако сте тук защото: 1. Имате нужда от кредити 2.

    Искате лесна оценка 3. Трябва ви бройка ИД от ЯКН
  16. Отпишете курса и освободете място

  17. Ако искате: 1. Да развиете техническите си умения 2. Да

    се срещнете с нови технологии 3. Да повишите кръвната си захар
  18. Дошли сте на правилното място

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

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

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

  22. None
  23. За първокурсниците • Курсът е обявен за втори курс и

    нагоре • Искаме минимални познания от УП и ООП • Отнема много време
  24. Има много "success stories", но трябва постоянство

  25. Конфуций казва: It does not matter how slowly you go

    as long as you do not stop.
  26. Административни въпроси

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

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

  29. Свободен достъп

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

  31. fmi@ruby.bg

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

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

  35. оценяване

  36. 0 45 90 135 180 6 5 4 3 180

    150 130 110 90 Скалата 6 5 4 3
  37. Задачи, 60 Тестове, 60 Проект, 60 Задължителните

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

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

    • 30 точки на тест • много гнусни, но не са критични за оценката
  40. Проекти • на края на семестъра • обмисляме да направим

    предварителна ("малка") защита след Коледа • вие измисляте или ние избираме • 60 точки • 1/3 функционалност, 1/3 стил, 1/3 тестове • да работят е задължително, но не достатъчно
  41. Бонуси • Предизвикателства • Участие в час • Участие във

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

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

    код • ще имате около 24 часа за всяко
  44. Тежките ограничения

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

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

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

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

  49. За какво ще говорим в курса?

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

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

    екосистема
  52. 2. Принципи

  53. SOLID

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

    Principle Dependency Inversion Principle
  55. Law of Demeter

  56. Single Level of Abstraction Principle (SLAP)

  57. Добър код

  58. Добър код

  59. “Programs must be written for people to read, and only

    incidentally for machines to execute.” — H. Abelson and G. Sussman
  60. Практики

  61. Refactoring

  62. Test-Driven Development

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

    него (или поне най-много лекция-две)
  64. Ще ви научим на Ruby

  65. None
  66. “Дялкам камъни”

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

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

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

  70. Yukihiro “Matz” Matsumoto

  71. designed for programmer productivity and fun

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

  73. динамичен

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

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

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

  78. култура

  79. open source!

  80. $ gem install rails

  81. слайдът от миналата година 6 милиарда сваляния

  82. близо 123 830 библиотеки днес 10 милиарда сваляния

  83. 10 милиарда сваляния общо 4 милиарда сваляния за последната година

  84. community

  85. None
  86. много блогове

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

  88. screencasts & podcasts

  89. конференции

  90. Garden City RubyConf Ruby devroom at FOSDEM Ruby Conf Australia

    Rubyfuza Ruby on Ales Tropical Ruby MountainWest RubyConf Bath Ruby Conference wroc_love.rb RubyConfLT Ancient City Ruby RubyConf Philippines Ruby Conf India RailsConf RubyConf Portugal WindyCityRails RubyConf Brazil Rocky Mountain Ruby Conference ROSSConf Berlin ArrrrCamp ROSSConf Vienna RubyConf Kenya Ruby Conference Kiev RedDotRubyConf RubyNation Gotham Ruby Conference Brighton Ruby JRubyConf EU Burlington Ruby Conference eurucamp DeccanRubyConf Madison+ Ruby Ruby Midwest Barcelona Ruby Conf RubyConf Taiwan Los Angeles Ruby Conference RubyConf Colombia EuRuKo Keep Ruby Weird RubyWorld Conference RubyDay RubyConf RailsIsrael RubyKaigi
  91. EuRuKo Sofia 23-24 септември 2016

  92. None
  93. None
  94. None
  95. елитизъм

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

  97. David Heinemeir Hanson

  98. от 2011 - зрялост Този слайд е отпреди 5 години.

    :)
  99. #КОЙ ползва Ruby?

  100. Twitter

  101. GitHub

  102. Shopify

  103. SoundCloud

  104. GoodReads

  105. SongKick

  106. Groupon

  107. Urban Dictionary

  108. fmi.ruby.bg

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

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

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

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

  113. 1.8 vs 1.9 vs 2.0 vs 2.1 vs 2.2 vs

    2.3
  114. ще ползваме само 2.3 и по-нови

  115. Текущата най-нова е 2.3.1

  116. MRI JRuby Rubinius IronRuby MacRuby + още много...

  117. ресурси

  118. Programming Ruby 1.9 and 2.0

  119. Metaprogramming Ruby 2

  120. малко код

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

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

  124. def factorial(n) 1.upto(n).reduce { |a, b| a * b }

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

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

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

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

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

    си профилна снимка • Попълнете анкетата • Инсталирайте си Ruby 2.3.1
  130. Въпроси?