Про що не говорять програмісти, про що мовчать...
Post on 15-Apr-2017
270 Views
Preview:
TRANSCRIPT
Про що не говорять програмісти, про що мовчать науковці
Юрко Тимчук REVEAL, University of LuganoSCG, University of Bern
Про що не говорять програмісти, про що мовчать науковці
REVEAL, University of LuganoSCG, University of Bernyuriy_tymchuk
Хто я?
Хто я?Тепер. 24 роки
2006. 15 років
Ph.D.UniBe
UnikernelФріланс команда
Тех-підтримка / адмін. мережі УАРНЕТ
Програміст Інтерлогіка
Львівський фізико-математичний ліцей
Програміст Innocode
Мала академія наук України
БакалавратФакультет інформатики. ЛНУ
Ph.D.USI
Стажування RMoD
МагістратураКафедра програмування. ЛНУ
Швидкий вступ у напрямки комп’ютерних наук
Обчислювальні науки
Інформаційні системи
Комп’ютерна графіка
Інтелектуальні системи
Швидкий вступ в об’єктно-орієнтоване програмування
Objects are like people. They’re living, breathing things that have knowledge inside them about how to do things and have memory inside them so they can remember th ings . 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
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
попериБудьЛаска:
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
„Пральний“ об’єкт
осьТвійПопранийОдяг:
„Пральний“ об’єкт
?
„Пральний“ об’єкт
попериБудьЛаска:
REVEAL(Reverse Engineering, Visualization, Evolution Analysis Lab)
CodeCity
SCGSoftware Composition Group
Traits
Traits
Smalltalk
Perl
Scala
C#
PHP
Ph.D.UniBe
UnikernelФріланс команда
Тех-підтримка / адмін. мережі УАРНЕТ
Програміст Інтерлогіка
Львівський фізико-математичний ліцей
Програміст Innocode
Мала академія наук України
БакалавратФакультет інформатики. ЛНУ
Ph.D.USI
Стажування RMoD
МагістратураКафедра програмування. ЛНУ
Pascal C++ C++ Java C#PHP JavaScriptProlog Lisp Erlang
Ruby
Smalltalk
JavaScala
Ruby
Pharo
PharoPython RacketSwift
Objective-C
C Bash
Філософія хакерів
Ха́кер (англ. Hacker) — особа, що намагається отримати
несанкціонований доступ до комп'ютерних систем, як правило з метою отримання
секретної інформації.
Філософія хакерів
Доступ до знань про світ
Вільна інформація
Визнання навичок
Мистетство програм
Покращення життя
Програмне забезпечення з відкритим кодом
Програмне забезпечення з відкритим кодом
Про катедру і базар
Як стати хакером?
C/С++ Python Lisp Java Perl
Рекомендації Еріка Реймонда
C Lisp Pharo Python/Ruby Java
Мої рекомендації
C Lisp Pharo Python/Ruby Java
низько-рівнева
функіональна
об’єктна
скриптова
“супер-популярна”
Мої рекомендації
На скільки пітонічний ваш код?
countriesWithA = []i=0while i < len(countryList): if "a" in countryList[i]: countriesWithA.append(countryList[i]) i += 1
На скільки пітонічний ваш код?
countriesWithA = []
for i in range(len(countryList)): if "a" in countryList[i]: countriesWithA.append(countryList[i])
На скільки пітонічний ваш код?
countriesWithA = []
for country in countryList: if "a" in coutry: countriesWithA.append(country)
На скільки пітонічний ваш код?
countriesWithA = [country for country in countryList if "a" in country]
Потоваришуйте з Лінуксом
Потрібне відео?
Потрібне відео?
Потрібне відео?
Потрібне відео?
Потрібне відео?
Потрібне відео?
використовуйтепокращуйте
робіть внесок у
Інша сторона хакерства
Samy Kamkar
Samy Kamkar
Samy Kamkar
“but most of all, samy is my hero”
Samy Kamkar
“but most of all, samy is my hero”
20 годин - 1 000 000 друзів
Aaron Swartz
Aaron Swartz
Ще трохи про етику
Ви зміните світ… пам’ятайте про це
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Хто має доступ до пошти?
Чи потрібна вам безпека?
From:
To:
Subject:
року виповнюєтьÑÑроків з Ð´Ð½Ñ Ð·Ð°ÑÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð›ÑŒÐ²Ñ–Ð²Ñького національного універÑитету імені Івана Франка. ІÑÑ‚Ð¾Ñ€Ñ–Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð›ÑŒÐ²Ñ–Ð²Ñького універÑитету ÑÑгає витоками Ð¥VІІ ÑÑ‚. У Ð¥VІ – Ð¥VІІ ÑÑ‚. центрами культурного Ð¶Ð¸Ñ‚Ñ‚Ñ Ð½Ð° українÑьких землÑÑ… були церковні братÑтва.
Mr. SmithMs. Smith
cancer
Що робити зі старим кодом?
Чірлідери для програмістів?
Technical Debt
очима замовника очима програміста
Еволюція програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Еволюція людства та програмістів
Xerox Alto
Чиста об’єктна мова Прекрасна спільнота Повний доступ Елегантна Жива 100% MIT ліцензія Mac, Linuxes, Windows, iOS
http://pharo.org
exampleWithNumber: x <syntaxOn: #aSlide> "This is a complete* syntax of Pharo language" | y |
true & false not & (nil isNil) ifFalse: [ self halt ].
y := self size + super size.
{ 1 . 2 . #($a #a 'a' 1.0 1) } do: [ :each |
Transcript show: each class name; show: each printString; show: ' ' ].
^ x < y
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:middleOf: a and: b
| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
summiddleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
:=
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
:=
sum +
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
:=
sum +
a b
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
:=
sum +
a b
/
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
#middleOf:and:b
a
sum^stst
:=
sum +
a b
/
sum 2
middleOf: a and: b| sum |sum := a + b.^ sum / 2
Синтаксичні дерева
Smalldromeda
Smalldromeda
Core Pharo dev (RMoD)
Smalldromeda
MOOSE
Smalldromeda
Seaside
Smalldromeda
Духи минулого різдва (Pharo10)
Smalldromeda
Smalldromeda
Сузір’я Бернарта
http://yuriy.tymch.uk/Smalldromeda/
Якість коду
Якість коду
Наскільки легкозрозумітизмінитиперевірити
програмне забезпечення
ISO/IEC, ISO/IEC 9126. Software Engineering – Product quality 6.5. ISO/IEC, 2001
(maintainability)
Code Review
A. Bacchelli, C. Bird. Expectations, outcomes, and challenges of modern code review. In Proceedings of ICSE’13, pp. 712–721, IEEE, 2013
Статичний аналізатор
Статичний аналізатор
Правила якості
Статичний аналізатор
Вихідний код
Правила якості
Статичний аналізатор
Правила якості
Статичний аналізатор
Критики
Правила якості
Статичний аналізатор
Find Bugs
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
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
ViDI є …
Відірваною від середовища розробки
QualityAssistant
yuriy_tymchuk
top related