ОПК № 1 – Вводная
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 755 views

1. Организационные и формальные вопросы. ...

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

Statistics

Views

Total Views
755
Views on SlideShare
417
Embed Views
338

Actions

Likes
2
Downloads
2
Comments
2

2 Embeds 338

http://opk.nsu.ru 310
http://opk.lab9.ru 28

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Да, это уже пару лет полугодовой спецкурс, а не годовой обязательный курс.

    // Комментарии тоже глючат – не отправляются.
    Are you sure you want to
    Your message goes here
    Processing…
  • А что теперь ОПК во втором семестре?
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция № 1 19 февраля 2013
    • ФОРМАЛЬНОСТИ•4 группы. 2 на базе ИАиЭ, 2 на базе ИЯФ.•В неделю: • Одна лекция (вторник, 17:45). 2 ак. ч. • Два семинара в каждой группе. 2×3=6 ак. ч.•В конце семестра диф. зачет (теория + проект + работа на семинарах).
    • УСЛОВИЯ РАБОТЫ• Лекции: алгоритмы, структуры данных, практики программирования.• Семинары: язык C, применение теоретических знаний на практике.• Материалы на сайте opk.nsu.ru: база задач и лекции.
    • КОМАНДА• Владимир Парфиненко (лекции, семинары, ИАиЭ). vladimir.parfinenko@gmail.com, @cypok• Алексей Девятайкин (семинары, ИАиЭ).• Александр Макеев (семинары, ИЯФ).• Ставро Гаязов и Павел Чеблаков (семинары, ИЯФ).
    • СОДЕРЖАТЕЛЬНАЯ ЧАСТЬ Крайне быстрое установление контекста для последующей работы
    • КРАТКО О ПРОГРАММИРОВАНИИ• Есть тупой кусок кремния (1), годный к повторяющимся, рутинным операциям.• Есть пользователь (2).• Программист (3) отбирает у пользователя (2) рутину, объясняя куску кремния (1), как ее выполнять.•В основе труда программиста (3) лежит модель системы.• Хорошая программа = хорошая модель.
    • ЧТО ЕСЛИ...• Программист отобрал у пользователя не ту рутину...• Программист плохо объяснил задачу тупому куску кремния...• Программист понял пользователя неправильно...• Модель у программиста в голове не соответствует действительности…• Программист решил, что он умный и сам правильно знает, как пользователю жить…• Пользователю никто не объяснил, как пользоваться программой…
    • …ТОПользователь всегда прав!P. S. Пользователь есть всегда и у любой программы!
    • HOMO LOGICUS VS. HOMO SAPIENS Программист Пользователь Цель: контроль Цель: простота Cтремится достичь Cтремится понять результатаВ фокусе исключительные В фокусе обыденные ситуации ситуации
    • ИСТОРИЯ ПРОГРАММИРОВАНИЯ Первые компьютеры (ENIAC, ...)
    • МАШИННЫЕ КОДЫ0 и 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: .EXITMSG: .ASCIZ /Hello, world!/ .END HELLO Язык низкого уровня — язык Ассемблера
    • БАЗОВАЯ ИДЕЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ program cool begin ...... end011001110101 Транслятор 011001 110101 Компьютер КомпьютерМашинные коды Использование ЯП
    • ЯЗЫКИ ВЫСОКОГО УРОВНЯ• FORTRAN (1950-е гг.) • Python (1991 г.)• LISP (1950-е гг.) • Ruby (1993 г.)• … • Java (1995 г.)• [Visual] BASIC (1964 г.) • JavaScript (1995 г.)• C (1972 г.) • PHP (1995 г.)• C++ (1983 г.) • C# (2001 г.)• Perl (1987 г.) • Scala (2003 г.)
    • СПОСОБЫ ТРАНСЛЯЦИИ Программа Программа (исходный код) (исходный код)Компиляция Компилятор Интерпретация Интерпретатор Исполняемый код Пользователь
    • ВИРТУАЛЬНЫЕ МАШИНЫ Программа(исходный код) Компилятор Компиляция Промежуточный (байт-) код Виртуальная машина Интерпретация, Пользователь иногда компиляция
    • ТЕНДЕНЦИИ• Языкипрограммирования становятся все мощнее за счет усложнения абстракций (ср. кирпич vs. разборный дом).• Тупыекуски кремния не становятся умнее, но усложняются, поэтому «объяснять» им все сложнее.• Трансляторы становятся все сложнее.• Ожидания пользователей растут.
    • WTF?!• Программист просто обязан постоянно учиться — новые технологии появляются ежедневно.• Естьбазовые вещи (алгоритмы, структуры данных, …). • Ими-то мы и займемся!
    • КОНЕЦ ПЕРВОЙ ЛЕКЦИИ