Про що не говорять програмісти, про що мовчать...

Post on 15-Apr-2017

270 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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

Синтаксичні дерева

Платформа для аналізу даних

http://moosetechnology.org

Платформа для аналізу даних

http://moosetechnology.org

Платформа для аналізу даних

http://moosetechnology.org

Платформа для аналізу даних

http://moosetechnology.org

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