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

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

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

Transcript

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

  2. Александър И. Александър И. Георги А. Георги Г. Георги Д.

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

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

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

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

  9. Engaging & Inclusive

  10. 1. Имате нужда от кредити 2. Искате лесна/висока оценка за

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

  12. 1. Да развиете техническите си умения 2. Да се срещнете

    с нови технологии 3. Да развиете нетехническите си (комуникационни) умения 4. Да повишите кръвната си захар Ако искате:
  13. Дошли сте на правилното място

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

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

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

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

  18. None
  19. административни въпроси

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

  21. http://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. оценяване

  31. Скалата

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

  33. • десет броя • предават се онлайн • проверяват се

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

    • 30 точки на тест • много гнусни, но не са критични за оценката
  35. • към края на семестъра • вие измисляте или ние

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

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

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

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

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

    нива на влагане в метод максимум 10 метода в клас
  41. спазване на конвенциите на езика само валидни английски думи за

    именуване и други... Тежките ограничения
  42. Строги конвенции и стил

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

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

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

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

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

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

  49. Добър код

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

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

  54. SOLID

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

    Principle Dependency Inversion Principle
  56. Law of Demeter

  57. Single Level of Abstraction Principle (SLAP)

  58. Практики

  59. Refactoring

  60. Test-Driven Development

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

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

  63. None
  64. “Дялкам камъни”

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

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

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

  68. Yukihiro “Matz” Matsumoto

  69. designed for programmer productivity and fun

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

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

  72. динамичен

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

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

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

  77. роден 1994 г. набира популярност 2004 г. заради Rails

  78. култура

  79. open source!

  80. $ gem install rails

  81. https://rubygems.org

  82. community

  83. None
  84. много блогове

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

  86. screencasts & podcasts

  87. колорит

  88. _why the lucky stiff

  89. None
  90. elitism

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

  92. David Heinemeir Hanson

  93. от 2011 - зрялост

  94. иновация

  95. GitHub

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

  97. Twitter

  98. GitHub

  99. Shopify

  100. SoundCloud

  101. GoodReads

  102. SongKick

  103. Groupon

  104. Urban Dictionary

  105. fmi.ruby.bg

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

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

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

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

  110. 1.8 vs 1.9 vs 2.0 vs 2.x

  111. ще ползваме само 2.2 и по- нови

  112. Текущата най-нова е 2.2.3

  113. JRuby Rubinius IronRuby MacRuby + още десетки

  114. ресурси

  115. Programming Ruby 1.9 and 2.0

  116. Metaprogramming Ruby 2

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

  118. малко код

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

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

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

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

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

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

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

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

    си профилна снимка • Попълнете анкетата • Инсталирайте си Ruby 2.2.3: http://fmi.ruby.bg/topics/1
  128. Q&A