Page 1
Програмиране с Rubyлекция 0
10 октомври 2011
Page 2
тази седмица:за курса & първи стъпки в Ruby
...но преди това:
Page 3
ще се опитам да ви убедяда отпишете курса
(отново)
Page 5
административнивъпроси
Page 6
Ден Час Зала
Понеделник 19:00 101
Вторник 19:00 200
Кога?
Page 7
искате ли да сменим залата?
Page 8
http://fmi.ruby.bg/(скоро)
Page 11
0
45
90
135
180180
150130
11090
Max6
54
3
Скалата
Page 12
Задачи60
Тестове60
Проект60
Задължителните
Page 13
Задачите
• десет броя• предават се онлайн• проверяват се автоматично• 0-6 точки
Page 14
Тестове
• два броя• 30 въпроса за един час
• 30 точки всеки
Page 15
Проекти
• на края на семестъра• вие измисляте или ние избираме• 60 точки
• 30 за функционалност, 30 за стил
Page 16
Бонусите
участие в часучастие във форумите
елеганти решенияпомощ на другарче
Page 17
Тежките ограничения
максимум X реда код в методмаксимум Х нива на влагане в методмаксимум Х метода в клас
Page 18
Тежките ограничения
максимум 10 реда код в методмаксимум 3 нива на влагане в методмаксимум 7 метода в клас
Page 19
за какво ще говорим в курса?
Page 20
в дълбочинаняма да сме повърхностнивсички language feature-и
идиомиекосистема
Page 23
“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-а
Page 24
“Programs must be written for people to read, and only incidentally for machines to execute.”
— H. Abelson and G. Sussman
Page 28
Single Responsibility PrincipleOpen-Closed PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
Page 30
Single Level of Abstraction Principle(SLAP)
Page 33
Test-DrivenDevelopment
Page 34
TDD + refactoring = чернова
Page 35
web frameworkнай-популярното нещо в Rubyняма да говорим за него(или поне най-много лекция-две)
Page 36
вместо това:ред малки библиотеки
Page 39
“Храня жената и децата”
Page 40
“Строя катедрали”
Page 41
В този курс ще се учим как се дялкат камъни, а не как се строят катедрали.
Page 43
Yukihiro “Matz” Matsumoto
Page 44
designed for programmerproductivity and fun
Page 45
Brevity
Simplicity
Balance
“Treating Code as an Essay”
Page 48
$ cat hello.rbputs "Hello world!"forty_two = 6 * 9puts "The answer is #{forty_two}"
$ ruby hello.rbHello world!The answer to is 54
интерпретира се
Page 49
general purposeмного web библиотеки
Page 50
обектно-ориентиранс функционални елементи
Page 51
вдъхновен от:Perl, Smalltalk, Python, Lisp
Page 54
$ gem install rails
Page 55
29 245 библиотеки тази сутрин
Page 56
133 923 хранилища, 50 491 потребителятази сутрин
Page 60
много много много много много блогове
Page 61
screencasts & podcasts
Page 63
_why the lucky stiff
Page 66
David Heinemeir Hanson(автор на Rails)
Page 67
David Heinemeir Hanson
Page 68
през 2011:зрялост
Page 70
nokogirisequelrspec
capybarasinatralolcat
Page 80
версии и интерпретатори
Page 82
ще ползваме само 1.9
Page 83
JRubyIronRubyRubiniusMacRuby
Page 85
why’s poignant guide to Ruby http://mislav.uniqpath.com/poignant-guide/
Page 86
Programming Ruby 1.9
Page 87
The Ruby Programming Language
Page 88
Ruby Best Practices
Page 90
# 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/
Page 91
(1..9).select { |x| x.odd? }.map { |x| x ** 2 }
Page 92
1.upto(10).inject { |a, b| a * b }
Page 93
def factorial(n) 1.upto(n).inject { |a, b| a * b }end
puts factorial(10)
Page 94
class Integer def factorial 1.upto(self).inject { |a, b| a * b } endend
puts 10.factorial
Page 95
def prime?(n) 2.upto(n - 1).all? { |a| n.remainder(a).nonzero? }end
puts prime?(13)puts prime?(42)
Page 96
class Integer def prime? 2.upto(pred).all? { |a| remainder(a).nonzero? } endend
puts 13.prime?puts 42.prime?