ruby 0 2012
TRANSCRIPT
Програмиране с Rubyлекция 0
03 октомври 2012
Monday, October 8, 12
днес сме сесъбрали с една цел:
Стефан Митьо
Monday, October 8, 12
ще се опитам да ви убедяда отпишете курса
Monday, October 8, 12
СтрашенMonday, October 8, 12
ТруденMonday, October 8, 12
Monday, October 8, 12
Kimo's high expectations set a new pace for me. He taught me “the standard pace is for chumps” - that the system is designed so anyone can keep up. If you're more driven than “just anyone” - you can do so much
more than anyone expects.
— http://sivers.org/kimo
Monday, October 8, 12
“Трябва да има кръв и пот.”— @skanev
Monday, October 8, 12
(имате ли Mac и iPhone/iPad/iPod?)
Monday, October 8, 12
административнивъпроси
Monday, October 8, 12
3Monday, October 8, 12
Monday, October 8, 12
Ден Час Зала
Понеделник 19:00 229
Сряда 19:00 325
Кога?
Monday, October 8, 12
@rbfmi
Monday, October 8, 12
facebook.com/groups/437194362990982/
Група “Програмиране с Ruby”
Monday, October 8, 12
Monday, October 8, 12
Четвъртата “лекция” от курсаще се проведе на “по бира”.
Датата е 15 октомври.Мястото вероятно е RockIT.
Monday, October 8, 12
оценяване
Monday, October 8, 12
всичко се върти околоточки
Monday, October 8, 12
Max6
54
3
Скалата
Monday, October 8, 12
Задачи60
Тестове60
Проект60
Задължителните
Monday, October 8, 12
Задачите
Monday, October 8, 12
Задачите• десет броя
Monday, October 8, 12
Задачите• десет броя• предават се онлайн
Monday, October 8, 12
Задачите• десет броя• предават се онлайн• проверяват се автоматично
Monday, October 8, 12
Задачите• десет броя• предават се онлайн• проверяват се автоматично• 0-6 точки
Monday, October 8, 12
Задачите• десет броя• предават се онлайн• проверяват се автоматично• 0-6 точки
• могат да дават допълнителни точки
Monday, October 8, 12
Задачите• десет броя• предават се онлайн• проверяват се автоматично• 0-6 точки
• могат да дават допълнителни точки• имате право да пропуснете три
Monday, October 8, 12
Задачите• десет броя• предават се онлайн• проверяват се автоматично• 0-6 точки
• могат да дават допълнителни точки• имате право да пропуснете три• чуждите решения са публични
Monday, October 8, 12
Тестове
Monday, October 8, 12
Тестове
• два броя
Monday, October 8, 12
Тестове
• два броя• 30 въпроса за един час
Monday, October 8, 12
Тестове
• два броя• 30 въпроса за един час
• 30 точки всеки
Monday, October 8, 12
Проекти
Monday, October 8, 12
Проекти
• на края на семестъра
Monday, October 8, 12
Проекти
• на края на семестъра• вие измисляте или ние избираме
Monday, October 8, 12
Проекти
• на края на семестъра• вие измисляте или ние избираме• 60 точки
Monday, October 8, 12
Проекти
• на края на семестъра• вие измисляте или ние избираме• 60 точки
• 30 за стил, 30 за тестове
Monday, October 8, 12
Проекти
• на края на семестъра• вие измисляте или ние избираме• 60 точки
• 30 за стил, 30 за тестове
• да работят е задължително, но не достатъчно
Monday, October 8, 12
има и други начинида изкарвате точки
Monday, October 8, 12
Участие в час
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
• обикновено на тях има код, който ви носи 1 точка
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
• обикновено на тях има код, който ви носи 1 точка
• насърчават да не спите в час
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
• обикновено на тях има код, който ви носи 1 точка
• насърчават да не спите в час• получивате ги за добро включване в час
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
• обикновено на тях има код, който ви носи 1 точка
• насърчават да не спите в час• получивате ги за добро включване в час• например: въпрос, отговор или коментар
Monday, October 8, 12
Участие в час
• някой знае ли защо държа Snickers?
• обикновено на тях има код, който ви носи 1 точка
• насърчават да не спите в час• получивате ги за добро включване в час• например: въпрос, отговор или коментар• ако прекалите с глупостите ще хванете захарна болест
Monday, October 8, 12
Участие в сайта
Monday, October 8, 12
Участие в сайта
• добър пост във форумите
Monday, October 8, 12
Участие в сайта
• добър пост във форумите• добър коментар на чуждо решение
Monday, October 8, 12
Помощ с материалите
Monday, October 8, 12
Помощ с материалите
• лекциите са OpenSource
Monday, October 8, 12
Помощ с материалите
• лекциите са OpenSource
• оправяне на грешки
Monday, October 8, 12
Помощ с материалите
• лекциите са OpenSource
• оправяне на грешки• примери от лекциите
Monday, October 8, 12
Помощ с материалите
• лекциите са OpenSource
• оправяне на грешки• примери от лекциите• ваши допълнения
Monday, October 8, 12
Challenges
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Challenges
• малка задачки относително често
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Challenges
• малка задачки относително често• малки: 4-10 реда код
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Challenges
• малка задачки относително често• малки: 4-10 реда код
• често: 2-3 пъти в седмицата
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Challenges
• малка задачки относително често• малки: 4-10 реда код
• често: 2-3 пъти в седмицата
• имате 24 часа за всяка
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Challenges
• малка задачки относително често• малки: 4-10 реда код
• често: 2-3 пъти в седмицата
• имате 24 часа за всяка
(понеже ни мързи* да измислим хубаво име)
* под “мързи” имаме предвид “не можем”Monday, October 8, 12
Tip of the Day
Monday, October 8, 12
Tip of the Day
• кратки полезни Ruby съвети
Monday, October 8, 12
Tip of the Day
• кратки полезни Ruby съвети
• няма да се всеки ден
Monday, October 8, 12
Tip of the Day
• кратки полезни Ruby съвети
• няма да се всеки ден• обикновено ги публикуваме ние
Monday, October 8, 12
Tip of the Day
• кратки полезни Ruby съвети
• няма да се всеки ден• обикновено ги публикуваме ние• може да изпращате и ваши
Monday, October 8, 12
И други...
Monday, October 8, 12
защо правим всичкотова?
Monday, October 8, 12
точките рефлектиратучастието ви в курса
Monday, October 8, 12
Вие имате ли идеи?
Monday, October 8, 12
въпроси?
Monday, October 8, 12
before_filter :get_current_year
def get_current_year @current_year = 2011end
Лош код
Monday, October 8, 12
3-4 ноември
Monday, October 8, 12
за какво ще говорим в курса?
Monday, October 8, 12
Monday, October 8, 12
в дълбочина
Monday, October 8, 12
в дълбочинаняма да сме повърхностни
Monday, October 8, 12
в дълбочинаняма да сме повърхностнивсички language feature-и
Monday, October 8, 12
в дълбочинаняма да сме повърхностнивсички language feature-и
идиоми
Monday, October 8, 12
в дълбочинаняма да сме повърхностнивсички language feature-и
идиомиекосистема
Monday, October 8, 12
Добър код
Monday, October 8, 12
Добър код
Monday, October 8, 12
“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-а
Monday, October 8, 12
“Programs must be written for people to read, and only incidentally for machines to execute.”
— H. Abelson and G. SussmanMonday, October 8, 12
Monday, October 8, 12
принципи
Monday, October 8, 12
SOLID
Monday, October 8, 12
Single Responsibility PrincipleOpen-Closed PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
Monday, October 8, 12
Law of Demeter
Monday, October 8, 12
Single Level of Abstraction Principle(SLAP)
Monday, October 8, 12
Expression Problem
Monday, October 8, 12
Практики
Monday, October 8, 12
Version Control
Monday, October 8, 12
Refactoring
Monday, October 8, 12
Test-DrivenDevelopment
Monday, October 8, 12
Monday, October 8, 12
web framework
Monday, October 8, 12
web frameworkнай-популярното нещо в Ruby
Monday, October 8, 12
web frameworkнай-популярното нещо в Rubyще говорим най-накрая (3-4 лекции)
Monday, October 8, 12
web frameworkнай-популярното нещо в Rubyще говорим най-накрая (3-4 лекции)(ОК за проекти, но трябва да одобрим)
Monday, October 8, 12
вместо това:ред малки библиотеки
Monday, October 8, 12
Тежките ограничения
максимум X реда код в методмаксимум Х нива на влагане в методмаксимум Х метода в клас
Monday, October 8, 12
Тежките ограничения
максимум 10 реда код в методмаксимум 3 нива на влагане в методмаксимум 7 метода в клас
Monday, October 8, 12
Monday, October 8, 12
“Дялкам камъни”
Monday, October 8, 12
“Храня жената и децата”
Monday, October 8, 12
“Строя катедрали”
Monday, October 8, 12
В този курс ще се учим как се дялкат камъни, а не как се строят катедрали.
Monday, October 8, 12
за Ruby
Monday, October 8, 12
Yukihiro “Matz” Matsumoto
Monday, October 8, 12
designed for programmerproductivity and fun
Monday, October 8, 12
Brevity
Simplicity
Balance
“Treating Code as an Essay”
Monday, October 8, 12
характеристики
Monday, October 8, 12
динамичен
Monday, October 8, 12
$ cat hello.rbputs "Hello world!"forty_two = 6 * 9puts "The answer is #{forty_two}"
$ ruby hello.rbHello world!The answer to is 54
интерпретира се
Monday, October 8, 12
general purposeмного web библиотеки
Monday, October 8, 12
обектно-ориентиранс функционални елементи
Monday, October 8, 12
вдъхновен от:Perl, Smalltalk, Python, Lisp
Monday, October 8, 12
култура
Monday, October 8, 12
open source!
Monday, October 8, 12
$ gem install rails
Monday, October 8, 12
44 982 библиотеки тази сутрин(миналата година бяха 29 245)
Monday, October 8, 12
133 923 хранилища, 50 491 потребителя(миналата година бяха 133 923 хранилища, 50 491 потребителя)
Monday, October 8, 12
community
Monday, October 8, 12
Monday, October 8, 12
много блогове
Monday, October 8, 12
много много много много много блогове
Monday, October 8, 12
screencasts & podcasts
Monday, October 8, 12
колорит
Monday, October 8, 12
_why the lucky stiffMonday, October 8, 12
Monday, October 8, 12
elitism
Monday, October 8, 12
David Heinemeir Hanson(автор на Rails)
Monday, October 8, 12
David Heinemeir Hanson
Monday, October 8, 12
през 2012:зрялост
Monday, October 8, 12
иновация
Monday, October 8, 12
nokogirisequelrspec
capybarasinatralolcat
Monday, October 8, 12
GitHubMonday, October 8, 12
кой ползва Ruby?
Monday, October 8, 12
TwitterMonday, October 8, 12
GitHubMonday, October 8, 12
ShopifyMonday, October 8, 12
SoundCloudMonday, October 8, 12
SongKickMonday, October 8, 12
GrouponMonday, October 8, 12
Urban DictionaryMonday, October 8, 12
версии и интерпретатори
Monday, October 8, 12
1.8 vs 1.9
Monday, October 8, 12
ще ползваме само 1.9
Monday, October 8, 12
JRubyIronRubyRubiniusMacRuby
Monday, October 8, 12
ресурси
Monday, October 8, 12
why’s poignant guide to Ruby http://mislav.uniqpath.com/poignant-guide/
Monday, October 8, 12
Programming Ruby 1.9
Monday, October 8, 12
The Ruby Programming Language
Monday, October 8, 12
Ruby Best Practices
Monday, October 8, 12
Monday, October 8, 12
малко код
Monday, October 8, 12
# 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 times5.times { puts say }
днес на http://ruby-lang.org/
Monday, October 8, 12
(1..9).select { |x| x.odd? }.map { |x| x ** 2 }
Monday, October 8, 12
1.upto(10).inject { |a, b| a * b }
Monday, October 8, 12
def factorial(n) 1.upto(n).inject { |a, b| a * b }end
puts factorial(10)
Monday, October 8, 12
class Integer def factorial 1.upto(self).inject { |a, b| a * b } endend
puts 10.factorial
Monday, October 8, 12
def prime?(n) 2.upto(n - 1).all? { |a| n.remainder(a).nonzero? }end
puts prime?(13)puts prime?(42)
Monday, October 8, 12
class Integer def prime? 2.upto(pred).all? { |a| remainder(a).nonzero? } endend
puts 13.prime?puts 42.prime?
Monday, October 8, 12
въпроси?
Monday, October 8, 12