Програмиране с 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.

    Студенти с минимални познания, опит и понякога – демотивирани Нашите наблюдения от предишни курсове са, че има основно два типа студенти: 1. Силно мотивирани, с повече опит и теоретични познания, готови да отделят много време на курса и които напредват с много бързи темпове. 2. Студенти на ръба на демотивацията,с минимални познания и минимален или никакъв опит.
  15. Втората група обикновено е жертва на проблеми както в образователната

    система като цяло, така и във ФМИ в частност.
  16. Искаме да адресираме и двете групи

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

  18. 1. Задавай въпроси 2. Не се отказвай Ако чувствате, че

    има нещо, което не сте осмислили добре – не се отказвайте лесно. Задайте въпрос. Няма нищо срамно в това. Няма нито един от нас, в тази зала, който да е с неограничена компетентност. Всеки се е борил с определен клас проблеми и е опитен в едни неща, но не толкова в други неща. И ключът в това да не спрем
  19. развитието си, е да си признаем – пред себе си

    и пред другите – когато не разбираме или не знаем нещо. И да се опитаме да разберем. Умението да програмираш, без значение от език или платформа, е невероятно оръжие. Сега, в този университет, имате златен шанс да се въоръжите. Не го пропускайте. Не се отказвайте. Ще помагаме :)
  20. Ако има въпрос, по който се чувствате по-компетентни и видите

    възможност за помощ – включете се. Така помагате не само на свой колега, но и на себе си. Не мога да изброя всички примери, в които съм осмислил или задълбочил познанията си за дадена концепция, опитвайки се да я обясня на друг. Също така, ще си помогнете за оценката :) Програмистката общност винаги ми
  21. е харесвала със своята готовност да приема начинаещи и да

    споделя знание. Винаги сме готови да разказваме разпалено за технология, език, принцип… И това е чудесно. Така се развиваме, защото притокът на свежи хора и идеи поставя на изпитание някои закостенели виждания и ни кара да се движим напред.
  22. административни въпроси

  23. Сбирките ни са само лекции, няма семинари. Ден Час Зала

    Понеделник 19:00 200 Сряда 19:00 200 Кога?
  24. http://fmi.ruby.bg Регистрацията е отворена. Имаме сайт. Това е основното място,

    където ще се случват нещата в курса – там ще качваме материали, ще пускаме новини, ще предавате домашни, ще дискутираме проблеми. Това ще е вашият нов дом във следващите четири месеца. Когато напишете “f” в лентата за URL на браузъра, трябва първото предложение да ви бъде fmi.ruby.bg, а не facebook.com. Затова, трябва да се регистрирате
  25. максимално скоро. За целта ще имате нужда от три имена

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

    ви няма в СУСИ – три имена и факултетен номер fmi@ruby.bg В СУСИ има лимит от 100 човека. Обикновено го достигаме и много хора записват курса с молба. Това е напълно окей с нас. Няма проблем да ви я подпишем, така или иначе е само формалност. За да се регистрирате в сайта в този случай, ще има нужда да ни изпратите на fmi@ruby.bg три имена и факултетен номер.
  27. Свободен достъп Ако не сте студент във ФМИ, или ако

    не сте студент изобщо – няма проблем да идвате на курса. Ще се отнасяме към вас както към другите студенти. Ще ви направим и регистрация в сайта. Изпратете ни три имена на fmi@ruby.bg и ще ви върнем фиктивен факултетен номер, с който да се регистрирате.
  28. Анкета на сайта След регистрация

  29. fmi@ruby.bg

  30. Група “Програмиране с Ruby” https://facebook.com/groups/programming.ruby/ Много удобна за организация на

    различни извънкласни занимания, за които ще споменем ей сега.
  31. @rbfmi Не е особено активен в момента, но може и

    да ни хрумне да го посъбудим. Съветваме да го следите.
  32. Много е важно да разчупим леда и да изградим малка

    общност. Така най-ефективно ще споделяме знания и опит.
  33. “Лекция” на “по бира” (подробности скоро) Най-вероятно ще е сряда,

    21 октомври. Ще я обявим като новина в сайта и ще направим събитие във фейсбук. Ще ни е важно да знаем колко от вас ще идват, за да изберем подходящо място, така че преценете рано.
  34. оценяване

  35. Скалата

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

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

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

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

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

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

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

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

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

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

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

  47. В края оценяваме усилия Точковата система ни помага да се

    ориентираме, но малки вариации там не са фатални. Това, което е най-важно за нас, е вашето желание да се развивате и усилията, които ще положите. Това е, което ще е ключово за оценката. Ако записвате курса само за оценка и кредити – по-добре го отпишете сега и направете места за хората, които имат желанието да инвестират време в развитието си.
  48. За какво ще говорим в курса?

  49. 1. Език за програмиране Очевидно, ще говорим за езика за

    програмиране Ruby и екосистемата около него.
  50. 2. Принципи Но ще говорим много и за принципи. Смятаме,

    че принципните неща, до които сме достигнали като изводи от опита си, са от основополагащо значение. Дори може да се каже, че езикът, който ще изучаваме, е по-скоро платформа, с чиято помощ ще се опитаме да ви предадем принципните неща, които не са пряко свързани с една конкретна технология.
  51. в дълбочина няма да сме повърхностни всички language feature-и идиоми

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

  53. Добър код

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

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

  58. SOLID

  59. https://en.wikipedia.org/wiki/SOLID_ (object-oriented_design) Single Responsibility Principle Open-Closed Principle Liskov Substitution Principle

    Interface Segregation Principle Dependency Inversion Principle
  60. Law of Demeter

  61. Single Level of Abstraction Principle (SLAP)

  62. Практики

  63. Refactoring

  64. Test-Driven Development

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

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

  67. None
  68. “Дялкам камъни”

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

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

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

  72. Yukihiro “Matz” Matsumoto

  73. designed for programmer productivity and fun Въпреки, че не е

    толкова популярен колкото Java, C++, Python, C# - е съвсем зрял инструмент, с който спокойно и прилично може да си изкарвате прехраната. Има търсене и недостиг на качествени Ruby кадри, както у нас, така и на международния пазар. Накратко – Ruby не е език-играчка. Ruby е като Tesla Model S. Може би не е с най-бързите параметри, но не е и никак бавен. Едно превозно
  74. средство, което е представител на бъдещето и което ти доставя

    уникално удоволствие, когато го използваш. И определено може да те придвижи от точка А до точка Б. Дори и да не ползвате Ruby в ежедневната си работа, покрай него ще научите неща, които ще са ви полезни и там. Дори това да е, че не може да продължите да пишете повече на текущите си език и технология, при положение, че има езици като Ruby :)
  75. Brevity Simplicity Balance “Treating Code as an Essay”

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

  77. динамичен

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

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

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

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

  83. култура

  84. open source!

  85. $ gem install rails

  86. Community хостинг за Ruby (безплатни) библиотеки (наричат се gems). •

    Над 100 хил. библиотеки • Над 90 хил. потребителя • Над 6 милиарда изтегляния https://rubygems.org
  87. community

  88. None
  89. много блогове

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

  91. screencasts & podcasts

  92. колорит

  93. _why the lucky stiff

  94. None
  95. elitism

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

  97. David Heinemeir Hanson

  98. от 2011 - зрялост Ако през 2011 г. сме казали,

    че Ruby и екосистемата около него са достигнали зрялост, три години по- късно това е вярно с още по-голяма сила.
  99. иновация

  100. GitHub

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

  102. Twitter

  103. GitHub

  104. Shopify

  105. SoundCloud

  106. GoodReads

  107. SongKick

  108. Groupon

  109. Urban Dictionary

  110. fmi.ruby.bg

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

  112. Това е за ваше добро. Ако много, много, много държите

    да правите проект на Rails, елате и говорете с нас. Rails проекти – забранени
  113. Въпроси, диалог и обратна връзка Обратната връзка и комуникацията както

    между вас и нашия екип, така и межу вас самите, са ключът към един успешен курс.
  114. версии и интерпретатори

  115. 1.8 vs 1.9 vs 2.0 vs 2.x

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

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

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

  119. ресурси

  120. Programming Ruby 1.9 and 2.0 Освен множеството ресурси онлайн, ако

    предпочитате по-структуриран подход и нямате търпение да започнете още сега, може да пробвате някоя книжка. Има няколко и на О’Reilly.
  121. Metaprogramming Ruby 2

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

  123. малко код

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

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

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

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

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

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

    end puts 13.prime? puts 42.prime?
  131. Какво следва? Добре. Да кажем, че сте решили да запишете

    курса. Какво следва?
  132. Още днес • Регистрирайте се на сайта: http://fmi.ruby.bg/ • Качете

    си профилна снимка • Попълнете анкетата • Инсталирайте си Ruby 2.2.3: http://fmi.ruby.bg/topics/1 Защо профилна снимка? Отново – по-добра комуникация. Хората инстинктивно търсим връзка между име и лице и това ни помага да си изградим образ за даден човек, което пък от ствоя страна ни помага да комуникираме по-ефективно с него.
  133. Q&A Време за въпроси.