Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

  13. Помагай на другарчето Ако има въпрос, по който се чувствате

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

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

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

  17. http://fmi.ruby.bg/ Регистрацията е отворена. Имаме сайт. Това е основното място,

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

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

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

  21. fmi@ruby.bg

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

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

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

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

    ни сбирка, тоест 20 октомври. Ще я обявим като новина в сайта и ще направим събитие във фейсбук. Ще ни е важно да знаем колко от вас ще идват, за да изберем подходящо място, така че преценете рано.
  26. Code Jam Session Тази година планираме да направим експериментално 1-2

    “code jam sessions”, в които вместо лекция, идвате с лаптоп и решавате един или повече малки проблеми, които ние поставим. Ще има повече от екипа в тези дни и ще ви помагаме с решенията. Ако имате коментари по тази точка, може да ни пишете.
  27. оценяване

  28. Скалата

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  46. Добър код

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

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

  51. SOLID

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

    Principle Dependency Inversion Principle
  53. Law of Demeter

  54. Single Level of Abstraction Principle (SLAP)

  55. Практики

  56. Refactoring

  57. Test-Driven Development

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

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

  60. None
  61. “Дялкам камъни”

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

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

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

  65. Yukihiro “Matz” Matsumoto

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

    толкова популярен колкото Java, C++, Python, C# - е съвсем зрял инструмент, с който спокойно и прилично може да си изкарвате прехраната. Има търсене и недостиг на качествени Ruby кадри, както у нас, така и на международния пазар. ! Накратко – Ruby не е език-играчка. Ruby е като Tesla Model S. Може би не е с най-бързите параметри, но не е и никак бавен. Едно превозно средство, което е представител на бъдещето и което ти доставя уникално удоволствие, когато го използваш. И определено може да те придвижи от точка А до точка Б. ! Дори и да не ползвате Ruby в ежедневната си работа, покрай него ще научите неща, които ще са ви полезни и там. Дори това да е, че не може да продължите да пишете повече на текущите си език и технология, при положение, че има неща като Ruby.
  67. Brevity Simplicity Balance “Treating Code as an Essay”

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

  69. динамичен

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

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

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

  74. култура

  75. open source!

  76. $ gem install rails

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

  78. community

  79. None
  80. много блогове

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

  82. screencasts & podcasts

  83. колорит

  84. _why the lucky stiff

  85. None
  86. elitism

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

  88. David Heinemeir Hanson

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

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

  91. GitHub

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

  93. Twitter

  94. GitHub

  95. Shopify

  96. SoundCloud

  97. SongKick

  98. Groupon

  99. Urban Dictionary

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

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

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

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

  104. 1.8 vs 1.9 vs 2.0 vs 2.1

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

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

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

  108. ресурси

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

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

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

  112. малко код

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

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

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


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

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


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


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

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

    си профилна снимка • Попълнете анкетата • Инсталирайте си Ruby 2.1.3 Защо профилна снимка? Отново – по-добра комуникация. Хората инстинктивно търсим връзка между име и лице и това ни помага да си изградим образ за даден човек, което пък от ствоя страна ни помага да комуникираме по-ефективно с него.
  122. Core Ruby @ Hack Bulgaria Програмиране с Ruby @ ФМИ

    + Тази година си партнираме с екипа на Хак България и курсът им Core Ruby. В модела на Хак България – inverted classroom – на сбирките решавате задачи, а теорията и лекциите са за домашно. ! Тъй като на този курс във ФМИ нямаме упражнения, комбинацията между двата курса е много удачна. Местата в Core Ruby са ограничени, но може да пишете на genadisamokovarov@gmail.com, ако желаете да се присъедините към курса, за да видите дали има възможност за това. ! Няма застъпване в графика на двата курса.
  123. въпроси? Време за въпроси. След въпросите и преди да се

    разотидем, искам да кажа и едно последно, кратко нещо.
  124. shteglasuvam.com Гласувайте на пети октомври.