Top Banner
Сучасне програмування Юрій Гуц, R&D Engineer @ ELEKS листопад 2012 Чим ми займаємось? Як ми це робимо? Які бувають IT-спеціалісти Що зараз популярно? Чому це для нас цікаво? Що треба знати та вміти? Чому виникають нові технології? Як створюються сучасні системи?
24

[Ukr] Programming and Technology Overview for non-IT Audience

Jun 23, 2015

Download

Documents

Yuriy Guts

An introductory presentation about computer programming, modern IT trends and programming languages for non-IT audience.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування

Юрій Гуц, R&D Engineer @ ELEKSлистопад 2012

Чим ми займаємось?

Як ми це робимо?Які бувають IT-спеціалісти?

Що зараз популярно?

Чому це для нас цікаво?

Що треба знати та вміти?

Чому виникають нові технології?

Як створюються сучасні системи?

Page 2: [Ukr] Programming and Technology Overview for non-IT Audience

Чим же ми займаємось?

Сучасне програмування (огляд)листопад 2012

Page 3: [Ukr] Programming and Technology Overview for non-IT Audience

Ми працюємо з комп’ютерамиМіф 1

(або «програмісти керують комп’ютером, натискаючи клавіші»)

Сучасне програмування (огляд)листопад 2012

Page 4: [Ukr] Programming and Technology Overview for non-IT Audience

Програмісти можуть працювати навіть на ткацькому станку!

Сучасне програмування (огляд)листопад 2012

(Google: “Jacquard Loom”)

«Інформатика — це така ж наука про комп’ютери, як астрономія —наука про телескопи.»

Е. Дейкстра

Комп’ютер лише допомагає нам при розробці.

Page 5: [Ukr] Programming and Technology Overview for non-IT Audience

Машина вміє думатиМіф 2

Сучасне програмування (огляд)листопад 2012

Меня два раза спрашивали [члены Парламента]:«Скажите на милость, мистер Бэббидж, что случится, если вы введете в машину неверные цифры? Cможем ли мы получить правильный ответ?»Я не могу себе даже представить, какая путаница в голове может привести к подобному вопросу.Чарльз Беббідж (Charles Babbage), 19 ст.

Page 6: [Ukr] Programming and Technology Overview for non-IT Audience

Машина вміє виконувати інструкції

Сучасне програмування (огляд)листопад 2012

Наша справа — детально пояснити їй, що робити

Для цього треба спілкуватися спільною мовою

Для комп’ютера це — числа

Page 7: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Як пояснити комп’ютеру,що треба додати два числа (19+23)?

Приклад:

160 16 1 138 30 17 1 2 195 162 18 1 180 76 205 33 19 23

(x86, MS-DOS, COM)

Page 8: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Зручність для користувача

• Дані потрібно вводити і виводити(клавіатура, мишка, сканер, веб-камера, мікрофон, монітор, принтер)

• Програма має допомагати користувачу (обробляти помилки, давати підказки)

Складність задачі

• Даних може бути дуже багато• Операції можуть бути складнішими, ніж

додавання двох чиселВ сучасних програмах потрібні мільйони

чисел-інструкцій,щоб описати бажану поведінку комп’ютера

Page 9: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

А можна програмувати якось простіше?!

Page 10: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Введемо мову програмування, трохи ближчу до людської.

.model tiny

.386

.data num1 db 19 num2 db 23 sum db ?

.codeorg 100h

start: mov al, num1 mov bl, num2 add al, bl mov sum, al

mov ah, 4ch int 21h

end start

Нехай комп’ютер сам її транслює в числа!

Page 11: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Це називається «простіше»?!

Page 12: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Щоб подолати складність,потрібно абстрагуватися від деталей

Наприклад, відкинути особливості роботи «заліза»і зосередитися на логіці програми

Розробити технології, що дозволяютьприховати непотрібні деталі

Обираємо технологію залежно від того,що для нас важливо, а що — ні

САМЕ ТОМУ ЇХ СЬОГОДНІ ТАК БАГАТО

Page 13: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Так уже краще

print 19 + 23

Додавання двох чисел (Python)

Page 14: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Кілька відомих абстракцій

Бази даних

• Як забезпечити надійне зберігання даних?• Як забезпечити зручний і швидкий пошук і

редагування?

Комп’ютерні мережі

• Як змусити машин спілкуватися між собою?• Як розділити складну задачу на кілька

машин?

«клієнт-сервер» P2P (peer-to-peer)

Page 15: [Ukr] Programming and Technology Overview for non-IT Audience

Це нудна і монотонна роботаМіф 3

Сучасне програмування (огляд)листопад 2012

An engineer is concerned with applying scientific knowledge and ingenuity to develop solutions for technical, social and economic problems.

Ingenuity is the quality of being clever, original, and inventive, often in the process of applying ideas to solve problems or meet challenges.

Програмний код — тільки кінцевий результат.

Здатність знайти красиве інженерне рішення — прирівнюється до мистецтва.(писати гарний код — в тому числі)

Page 16: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Основні технологічні напрямки

Desktop

Web

Mobile

Embedded

Page 17: [Ukr] Programming and Technology Overview for non-IT Audience

ПЗ для настільних комп’ютерівDesktop

Сучасне програмування (огляд)листопад 2012

Приклади:MS Office, Photoshop, CorelDRAW, AutoCAD, Sony Vegas, «важкі» ігри

Особливості:• Зазвичай багаті апаратні

ресурси• Багато програм уже мають web-

аналоги

Page 18: [Ukr] Programming and Technology Overview for non-IT Audience

ПЗ, доступне через ІнтернетWeb

Сучасне програмування (огляд)листопад 2012

Приклади:Facebook, Wikipedia, YouTube, LinkedIn, Google Search, Twitter

Особливості:• Розподілена природа• Багато одночасних користувачів• Універсальний доступ з різних

пристроїв

Page 19: [Ukr] Programming and Technology Overview for non-IT Audience

ПЗ для мобільних пристроївMobile

Сучасне програмування (огляд)листопад 2012

Приклади:Аплікації для планшетів, смартфонів, електронних книг (iBooks, Instagram, …)

Особливості:• Швидкість і енергоекономність• Наявність сенсорів (GPS,

гіроскоп, …)• Обмежені обчислювальні

потужності• «Зоопарк» пристроїв

Page 20: [Ukr] Programming and Technology Overview for non-IT Audience

Вузькоспеціалізоване ПЗ,інтегроване в конкретне апаратне

забезпечення

Embedded

Сучасне програмування (огляд)листопад 2012

Приклади:Бортові комп’ютери автомобілів і літаків, ПЗ для медобладнання, систем безпеки, …

Особливості:• «Низькорівневість» програмування• Небагато взаємодії з користувачем• Вимоги до швидкодії• Вимоги до надійності («mission

critical»)

Page 21: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

Популярні мови програмування

С / С++ JavaScript

Java Python

C# (.NET) Ruby

PHPФункціональні

(Lisp [+dialects], Haskell, Erlang, F#)

Page 22: [Ukr] Programming and Technology Overview for non-IT Audience

Вивчення «правильної» мови програмування зробить тебе хорошим, універсальним

спеціалістом

Міф 4

Сучасне програмування (огляд)листопад 2012

Будь-яка технологія — це інструмент.

Кожен інструмент має область застосування, свої плюси й мінуси.

If all you have is a hammer,everything looks like a nail. Abraham Maslow

Page 23: [Ukr] Programming and Technology Overview for non-IT Audience

Сучасне програмування (огляд)листопад 2012

«Навчитись і перевчитись»

Page 24: [Ukr] Programming and Technology Overview for non-IT Audience

Q & A

Summer School 2012

[email protected]