Slide 1

Slide 1 text

Про що не говорять програмісти, про що мовчать науковці Юрко Тимчук Research Assistant SCG, University of Bern

Slide 2

Slide 2 text

Про що не говорять програмісти, про що мовчать науковці Research Assistant SCG, University of Bern yuriy_tymchuk Mark II

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Хто я?

Slide 5

Slide 5 text

Хто я?

Slide 6

Slide 6 text

Хто я? Тепер. 25 років

Slide 7

Slide 7 text

Хто я? Тепер. 25 років 2006. 15 років

Slide 8

Slide 8 text

Хто я? Тепер. 25 років 2006. 15 років Львівський фізико- математичний ліцей

Slide 9

Slide 9 text

Хто я? Тепер. 25 років 2006. 15 років Львівський фізико- математичний ліцей Мала академія наук України

Slide 10

Slide 10 text

Хто я? Тепер. 25 років 2006. 15 років Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ

Slide 11

Slide 11 text

Хто я? Тепер. 25 років 2006. 15 років Тех-підтримка / адмін. мережі УАРНЕТ Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ

Slide 12

Slide 12 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ

Slide 13

Slide 13 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Магістратура Кафедра програмування. ЛНУ

Slide 14

Slide 14 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Магістратура Кафедра програмування. ЛНУ

Slide 15

Slide 15 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Стажування RMoD Магістратура Кафедра програмування. ЛНУ

Slide 16

Slide 16 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Програміст Innocode Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Стажування RMoD Магістратура Кафедра програмування. ЛНУ

Slide 17

Slide 17 text

Хто я? Тепер. 25 років 2006. 15 років Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Програміст Innocode Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Ph.D. USI Стажування RMoD Магістратура Кафедра програмування. ЛНУ

Slide 18

Slide 18 text

Хто я? Тепер. 25 років 2006. 15 років Ph.D. UniBe Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Програміст Innocode Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Ph.D. USI Стажування RMoD Магістратура Кафедра програмування. ЛНУ

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Швидкий вступ у напрямки комп’ютерних наук

Slide 21

Slide 21 text

Обчислювальні науки

Slide 22

Slide 22 text

Інформаційні системи

Slide 23

Slide 23 text

Комп’ютерна графіка

Slide 24

Slide 24 text

Інтелектуальні системи

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Швидкий вступ в об’єктно-орієнтоване програмування

Slide 27

Slide 27 text

Objects are like people. They’re living, breathing things that have knowledge inside them about how to do things and have memory i n s i d e t h e m s o t h e y c a n remember things. And rather than interacting with them at a very low level, you interact with them at a very high level of abstraction, like we’re doing right here. Steve Jobs 1995

Slide 28

Slide 28 text

„Пральний“ об’єкт

Slide 29

Slide 29 text

„Пральний“ об’єкт

Slide 30

Slide 30 text

„Пральний“ об’єкт попериБудьЛаска:

Slide 31

Slide 31 text

„Пральний“ об’єкт

Slide 32

Slide 32 text

„Пральний“ об’єкт

Slide 33

Slide 33 text

„Пральний“ об’єкт

Slide 34

Slide 34 text

„Пральний“ об’єкт

Slide 35

Slide 35 text

„Пральний“ об’єкт

Slide 36

Slide 36 text

„Пральний“ об’єкт

Slide 37

Slide 37 text

„Пральний“ об’єкт осьТвійПопранийОдяг:

Slide 38

Slide 38 text

„Пральний“ об’єкт ?

Slide 39

Slide 39 text

попериБудьЛаска: „Пральний“ об’єкт

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

REVEAL (Reverse Engineering, Visualization, Evolution Analysis Lab)

Slide 42

Slide 42 text

CodeCity

Slide 43

Slide 43 text

SCG Software Composition Group

Slide 44

Slide 44 text

Traits

Slide 45

Slide 45 text

Traits Smalltalk Perl Scala C# PHP

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Pascal C++ C++ Java C# PHP JavaScript Prolog Lisp Erlang Ruby Smalltalk Java Scala Ruby Pharo Pharo Python Racket Swift Objective-C C Bash Ph.D. UniBe Unikernel Фріланс команда Тех-підтримка / адмін. мережі УАРНЕТ Програміст Інтерлогіка Львівський фізико- математичний ліцей Програміст Innocode Мала академія наук України Бакалаврат Факультет інформатики. ЛНУ Ph.D. USI Стажування RMoD Магістратура Кафедра програмування. ЛНУ Java? LaTeX?

Slide 49

Slide 49 text

Хто я?

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

Дія 1: Філософія Хакерів

Slide 52

Slide 52 text

Філософія хакерів Ха ́ кер (англ. Hacker) — особа, що намагається отримати несанкціонований доступ до комп'ютерних систем, як правило з метою отримання секретної інформації.

Slide 53

Slide 53 text

Філософія хакерів Hacker — originally, someone who makes furniture with an axe. Хакер — оригінально, людина, яка робить меблі сокирою

Slide 54

Slide 54 text

Доступ до знань про світ

Slide 55

Slide 55 text

Вільна інформація

Slide 56

Slide 56 text

Визнання навичок

Slide 57

Slide 57 text

Мистетство програм

Slide 58

Slide 58 text

Покращення життя

Slide 59

Slide 59 text

Програмне забезпечення з відкритим кодом

Slide 60

Slide 60 text

Програмне забезпечення з відкритим кодом

Slide 61

Slide 61 text

Про катедру і базар

Slide 62

Slide 62 text

Як стати хакером?

Slide 63

Slide 63 text

C/С++ Python Lisp Java Perl Рекомендації Еріка Реймонда

Slide 64

Slide 64 text

C Lisp Pharo Python/Ruby Java Мої рекомендації

Slide 65

Slide 65 text

C Lisp Pharo Python/Ruby Java низько-рівнева функіональна об’єктна скриптова “супер-популярна” Мої рекомендації

Slide 66

Slide 66 text

На скільки пітонічний ваш код? countriesWithA = []
 i=0
 while i < len(countryList): if "a" in countryList[i]: countriesWithA.append(countryList[i]) i += 1

Slide 67

Slide 67 text

На скільки пітонічний ваш код? countriesWithA = [] for i in range(len(countryList)): if "a" in countryList[i]: countriesWithA.append(countryList[i])

Slide 68

Slide 68 text

На скільки пітонічний ваш код? countriesWithA = [] for country in countryList: if "a" in coutry: countriesWithA.append(country)

Slide 69

Slide 69 text

На скільки пітонічний ваш код? countriesWithA = [country for country in countryList if "a" in country]

Slide 70

Slide 70 text

Потоваришуйте з Лінуксом

Slide 71

Slide 71 text

Потрібне відео?

Slide 72

Slide 72 text

Потрібне відео?

Slide 73

Slide 73 text

Потрібне відео?

Slide 74

Slide 74 text

Потрібне відео?

Slide 75

Slide 75 text

Потрібне відео?

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

використовуйте покращуйте робіть внесок у

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

If that guy knew half the shit that I know, his fuzzy little head would explode.

Slide 80

Slide 80 text

Інша сторона хакерства

Slide 81

Slide 81 text

Samy Kamkar

Slide 82

Slide 82 text

Samy Kamkar

Slide 83

Slide 83 text

Samy Kamkar “but most of all, samy is my hero”

Slide 84

Slide 84 text

Samy Kamkar “but most of all, samy is my hero” 20 годин - 1 000 000 друзів

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

Дія 2:Еволюція програмістів

Slide 87

Slide 87 text

Еволюція людства та програмістів

Slide 88

Slide 88 text

Еволюція людства та програмістів

Slide 89

Slide 89 text

Еволюція людства та програмістів

Slide 90

Slide 90 text

Еволюція людства та програмістів

Slide 91

Slide 91 text

Еволюція людства та програмістів

Slide 92

Slide 92 text

Еволюція людства та програмістів

Slide 93

Slide 93 text

Еволюція людства та програмістів

Slide 94

Slide 94 text

A як же лінукс?

Slide 95

Slide 95 text

Метафора із стоматологами

Slide 96

Slide 96 text

Метафора із стоматологами

Slide 97

Slide 97 text

Метафора із стоматологами

Slide 98

Slide 98 text

Метафора із стоматологами

Slide 99

Slide 99 text

Метафора із стоматологами

Slide 100

Slide 100 text

Метафора із стоматологами

Slide 101

Slide 101 text

Метафора із стоматологами

Slide 102

Slide 102 text

No content

Slide 103

Slide 103 text

No content

Slide 104

Slide 104 text

No content

Slide 105

Slide 105 text

No content

Slide 106

Slide 106 text

No content

Slide 107

Slide 107 text

No content

Slide 108

Slide 108 text

No content

Slide 109

Slide 109 text

No content

Slide 110

Slide 110 text

No content

Slide 111

Slide 111 text

Xerox Alto

Slide 112

Slide 112 text

No content

Slide 113

Slide 113 text

No content

Slide 114

Slide 114 text

No content

Slide 115

Slide 115 text

Дія 3:

Slide 116

Slide 116 text

Програміст

Slide 117

Slide 117 text

Програміст

Slide 118

Slide 118 text

Програміст

Slide 119

Slide 119 text

Програміст

Slide 120

Slide 120 text

Піднімаємо пітонічність countriesWithA = []
 i=0
 while i < len(countryList): if "a" in countryList[i]: countriesWithA.append(countryList[i]) i += 1

Slide 121

Slide 121 text

Піднімаємо пітонічність countriesWithA = []
 i=0
 while i < len(countryList): if "a" in countryList[i]: countriesWithA.append(countryList[i]) i += 1

Slide 122

Slide 122 text

Піднімаємо пітонічність countriesWithA = [] for country in countryList: if "a" in country: countriesWithA.append(country) countriesWithA = []
 i=0
 while i < len(countryList): if "a" in countryList[i]: countriesWithA.append(countryList[i]) i += 1

Slide 123

Slide 123 text

Якість коду

Slide 124

Slide 124 text

Якість коду Наскільки легко зрозуміти змінити перевірити програмне забезпечення ISO/IEC, ISO/IEC 9126. Software Engineering – Product quality 6.5. ISO/IEC, 2001 (maintainability)

Slide 125

Slide 125 text

Code Review A. Bacchelli, C. Bird. Expectations, outcomes, and challenges of modern code review. In Proceedings of ICSE’13, pp. 712–721, IEEE, 2013

Slide 126

Slide 126 text

Find Bugs

Slide 127

Slide 127 text

Visual Design Inspection Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015

Slide 128

Slide 128 text

Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015 Y. Tymchuk, A. Mocci, and M. Lanza. Vidi: The Visual Design Inspector. In Proceedings of ICSE’15, to be published, IEEE, 2015 ViDI

Slide 129

Slide 129 text

No content

Slide 130

Slide 130 text

ViDI є …

Slide 131

Slide 131 text

Відірваною від середовища розробки

Slide 132

Slide 132 text

QualityAssistant

Slide 133

Slide 133 text

Very disturbing Disturbing Sometimes Disturbing Not influential Sometimes Useful Useful Very useful How do you Snd QualityAssistant?

Slide 134

Slide 134 text

Very disturbing Disturbing Sometimes Disturbing Not influential Sometimes Useful Useful Very useful How do you Snd QualityAssistant?

Slide 135

Slide 135 text

Very disturbing Disturbing Sometimes Disturbing Not influential Sometimes Useful Useful Very useful 46% 29% 17% 4% 4% How do you Snd QualityAssistant?

Slide 136

Slide 136 text

Але CriticBrowser вже існує пів дюжини років!

Slide 137

Slide 137 text

Як часно ви користуєтеся CriticBrowser?

Slide 138

Slide 138 text

Не знаю такого Ніколи Щороку Щомісяця Щотижня Щодня 24% 24% 22% 11% 11% 9% Як часно ви користуєтеся CriticBrowser?

Slide 139

Slide 139 text

Аналіз еволюцїї Фаро

Slide 140

Slide 140 text

680 Versions Аналіз еволюцїї Фаро

Slide 141

Slide 141 text

40K 30K 20K 10K 680 Versions 0 Аналіз еволюцїї Фаро

Slide 142

Slide 142 text

40K 30K 20K 10K 680 Versions Critiques 0 Аналіз еволюцїї Фаро Number of Critiques Σ=19.5M

Slide 143

Slide 143 text

680 Versions Аналіз еволюцїї Фаро Number of Critiques Σ=19.5M Δ=64.5K

Slide 144

Slide 144 text

Number of Critiques Σ=19.5M Δ=64.5K Погана еволюція

Slide 145

Slide 145 text

Number of Critiques Σ=19.5M Δ=64.5K Добра еволюція

Slide 146

Slide 146 text

Number of Critiques Σ=19.5M Δ=64.5K

Slide 147

Slide 147 text

Packages Versions Rules

Slide 148

Slide 148 text

No content

Slide 149

Slide 149 text

No content

Slide 150

Slide 150 text

46% 29% 17% 4% 4%

Slide 151

Slide 151 text

No content