ОПК № 1 – Вводная

19
ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция 1 19 февраля 2013

Upload: vladimir-parfinenko

Post on 16-Jun-2015

599 views

Category:

Technology


0 download

DESCRIPTION

1. Организационные и формальные вопросы. 2. Пользователь всегда прав! 3. Что такое язык программирования? 4. Краткая история развития языков программирования: машинные коды, ассемблер, языки высокого уровня. 5. Способы трансляции: компиляция и интерпретация. 6. Виртуальные машины. 7. Ученье — свет, неученье — тьма (для программиста: потеря работы).

TRANSCRIPT

Page 1: ОПК № 1 – Вводная

ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ

Лекция № 119 февраля 2013

Page 2: ОПК № 1 – Вводная

ФОРМАЛЬНОСТИ

• 4 группы. 2 на базе ИАиЭ, 2 на базе ИЯФ.

• В неделю:•Одна лекция (вторник, 17:45). 2 ак. ч.• Два семинара в каждой группе. 2×3=6 ак. ч.

• В конце семестра диф. зачет (теория + проект + работа на семинарах).

Page 3: ОПК № 1 – Вводная

УСЛОВИЯ РАБОТЫ

• Лекции: алгоритмы, структуры данных, практики программирования.

• Семинары: язык C, применение теоретических знаний на практике.

•Материалы на сайте opk.nsu.ru: база задач и лекции.

Page 4: ОПК № 1 – Вводная

КОМАНДА

• Владимир Парфиненко (лекции, семинары, ИАиЭ). [email protected], @cypok

• Алексей Девятайкин (семинары, ИАиЭ).

• Александр Макеев (семинары, ИЯФ).

• Ставро Гаязов и Павел Чеблаков (семинары, ИЯФ).

Page 5: ОПК № 1 – Вводная

СОДЕРЖАТЕЛЬНАЯ ЧАСТЬКрайне быстрое установление контекста

для последующей работы

Page 6: ОПК № 1 – Вводная

КРАТКО О ПРОГРАММИРОВАНИИ

• Есть тупой кусок кремния (1), годный к повторяющимся, рутинным операциям.

• Есть пользователь (2).

• Программист (3) отбирает у пользователя (2) рутину, объясняя куску кремния (1), как ее выполнять.

• В основе труда программиста (3) лежит модель системы.

• Хорошая программа = хорошая модель.

Page 7: ОПК № 1 – Вводная

ЧТО ЕСЛИ...

• Программист отобрал у пользователя не ту рутину...

• Программист плохо объяснил задачу тупому куску кремния...

• Программист понял пользователя неправильно...

• Модель у программиста в голове не соответствует действительности…

• Программист решил, что он умный и сам правильно знает, как пользователю жить…

• Пользователю никто не объяснил, как пользоваться программой…

Page 8: ОПК № 1 – Вводная

…ТОПользователь всегда прав!

P. S. Пользователь есть всегда и у любой программы!

Page 9: ОПК № 1 – Вводная

HOMO LOGICUS VS.HOMO SAPIENS

Программист Пользователь

Цель: контроль Цель: простота

Cтремится понять Cтремится достичь результата

В фокусе исключительные ситуации

В фокусе обыденные ситуации

Page 10: ОПК № 1 – Вводная

ИСТОРИЯ ПРОГРАММИРОВАНИЯПервые компьютеры (ENIAC, ...)

Page 11: ОПК № 1 – Вводная

МАШИННЫЕ КОДЫ0 и 1 хороши для кремния, но не для программистов

Page 12: ОПК № 1 – Вводная

ПЕРВЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ

Язык низкого уровня — язык Ассемблера

.TITLE HELLO WORLD .MCALL .TTYOUT,.EXITHELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER BEQ DONE ;IF ZERO, EXIT LOOP .TTYOUT ;OTHERWISE PRINT IT BR 1$ ;REPEAT LOOPDONE: .EXIT MSG: .ASCIZ /Hello, world!/ .END HELLO

Page 13: ОПК № 1 – Вводная

БАЗОВАЯ ИДЕЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Компьютер

011001110101

Машинные коды

Компьютер

Транслятор

011001110101

Использование ЯП

program coolbegin ......end

Page 14: ОПК № 1 – Вводная

ЯЗЫКИ ВЫСОКОГО УРОВНЯ• FORTRAN (1950-е гг.)

• LISP (1950-е гг.)

• …

• [Visual] BASIC (1964 г.)

• C (1972 г.)

• C++ (1983 г.)

• Perl (1987 г.)

• Python (1991 г.)

• Ruby (1993 г.)

• Java (1995 г.)

• JavaScript (1995 г.)

• PHP (1995 г.)

• C# (2001 г.)

• Scala (2003 г.)

Page 15: ОПК № 1 – Вводная

СПОСОБЫ ТРАНСЛЯЦИИПрограмма

(исходный код)

Исполняемый код

Программа (исходный код)

Компиляция

Интерпретатор

Пользователь

ИнтерпретацияКомпилятор

Page 16: ОПК № 1 – Вводная

ВИРТУАЛЬНЫЕ МАШИНЫПрограмма

(исходный код)

Промежуточный (байт-) код

Компилятор Компиляция

Пользователь

Виртуальнаямашина

Интерпретация,иногда компиляция

Page 17: ОПК № 1 – Вводная

ТЕНДЕНЦИИ

• Языки программирования становятся все мощнее за счет усложнения абстракций (ср. кирпич vs. разборный дом).

• Тупые куски кремния не становятся умнее, но усложняются, поэтому «объяснять» им все сложнее.

• Трансляторы становятся все сложнее.

•Ожидания пользователей растут.

Page 18: ОПК № 1 – Вводная

WTF?!

• Программист просто обязан постоянно учиться — новые технологии появляются ежедневно.

• Есть базовые вещи (алгоритмы, структуры данных, …).

• Ими-то мы и займемся!

Page 19: ОПК № 1 – Вводная

КОНЕЦ ПЕРВОЙ ЛЕКЦИИ