
Я зыки программирования
(Слайд 0).
Описание установочной (вводной) лекции:
В установочной лекции я расскажу о том:
1) зачем нужны языки программирования,
2) какие языки программирования бывают,
3) для каких целей языки программирования предназначены;
4) кратко рассмотрим:
- язык разметки гипертекста (HTML),
- расширяемый язык разметки (XML),
- язык запросов (SQL).
Лекция 1-2
Сегодня у нас будет установочная лекция (1 или 2), где я вам расскажу о языках программирования вообще, об их современном состоянии, видах языков программирования на сегодняшний день.
В
округ
нас множество электронных устройств,
в которых содержится маленький компьютер.
Даже мультимедиа аппарат, которым я
пользуюсь, содержит в себе компьютер,
который необходимо программировать,
чтобы данное устройство хорошо работало
– в нужном режиме (режимах). Мы рассмотрим,
как можно программировать на платформе
Microsoft и какие языки
программирования.
Для этого обратимся к тому, как устроен сам компьютер (Слайд 1). Нас будут интересовать две составляющие компьютера: это оперативная память и центральный процессор.
В оперативной памяти хранятся программа и данные, которыми она оперирует. Эта программа состоит из простых команд в машинных кодах, которые передаются в процессор на выполнение. И процессор умеет выполнять эти простые команды типа: взять содержимое одной ячейки памяти в регистр, сложить с другой, записать в третью, повторить с такого-то адреса.
Соответственно
(слайд 2), изначально компьютеры
программировались в таких машинных
кодах в виде чисел, которые
записывались в память и потом выполнялись
центральным процессором. И таким образом
необходимо было программисту знать и
помнить машинные коды в виде чисел, а
также адреса ячеек памяти.
К
онечно
же использовать машинные коды в виде
чисел было неудобно, поэтому достаточно
быстро придумали называть команды с
помощью некоторых англоязычных
аббревиатур, которые было легче
запоминать. Такой язык называется языком
ассемблера (слайд 3), поскольку
он позволял также помимо аббревиатуры
команд не запоминать адреса некоторых
областей данных, а называть их именами
и затем эти адреса в процессе преобразования
в машинные коды автоматически подставлять.
Однако такой способ программирования
был доступен только продвинутым
программистам. И назывался языком
низкого урвня
В какой-то момент захотелось, чтобы математики и научные сотрудники, занимающиеся научно-техническими расчетами, которые программировали расчётные задачи, могли сами писать программы, не обращаясь для этого к программистам, владеющим языком программирования ассемблер..
Т
огда
в 50-х годах (слайд 4) Джон Бэкус
придумал язык Fortran
(от англ. словосочетания Formula
Translated – Tранслятор
Формул) – язык, похожий на математический
язык. Такой язык получил название язык
высокого уровня.
Д
ругим
примером языка высокого уровня (слайд
5) является язык C # (Си
шарп).
Э
ти
языки называются также императивными
языками, поскольку они состоят из
набора операторов, каждый из которых
что-то делает, т.е. он изменяет
состояние памяти определенным
образом.
Память в таких языках представлена переменными, которые мы можем описывать, задавая и приписывая им определенный тип.
Таких языков существует множество (слайд 6). Помимо языка C#, естественно есть язык С++, Паскаль, Фортран, упомянутый уже, Pyton, Java и т.д. Эти все языки императивные.
Н
а
данном слайде (слайд 7) мы видим
фрагмент программы решения квадратного
уравнения, в котором описываются
коэффициенты уравнения -a-,
-b- и -c-;
вычисляется дискриминант с помощью
формулы и затем вычисляется значение
двух корней с выводом их значений на
экран. Основное, что мы здесь видим, это
оператор присваивания, который берет
какие-то переменные из памяти, совершает
с ней математические действия и записывает
результат снова в память.
Однако описывать алгоритм в виде большой последовательности операторов неудобно.
Рассказать кратко – про переход с операционной системы DOS на ОС Windows и появление возможности обработки больших массивов, как цифровой информации, так и табличной, содержащей, зачастую, сведения не только количественного, но и качественного характера (вспомните, электронные магазины, торгующие книгами, мебелью, эл. техникой, товарами, отнюдь, неколичественными и т.п.).
Поэтому возникает вопрос: как лучше сгруппировать программный код, чтобы естественно перейти к программированию больших программных систем. Замечено было, что в Мире очень много объектов, т.е. сущностей, которые имеют определенные свойства и поведения. Например, стул – это сущность, у которой есть количество ножек (4), параметры (высота и ширина) и определенные действия, которые можно с ним делать: взять, поставить, переместить и т.д. Более того, можно заметить, что стул является частным случаем мебели. И у мебели также есть свои свойства, например, материал – дерево, дуб, ДСП и т.д.
С
оответственно,
оказалось удобным группировать
программный код также вокруг объектов
и полученные языки стали называться
объектно-ориентированными языками
программирования. (слайд 8).
В них имеются три ключевых свойства – это:
- инкапсуляция (возможность привязать код к какому-то объекту и скрыть часть этого кода внутри, чтобы не выпустить детали реализации наружу);
- наследование (когда мы можем объединить классы и объекты в иерархию и более конкретные объекты, типа стула, они наследуют автоматически свойства, процедуры какие-то, функции от более абстрактных объектов);
- полиморфизм (который позволяет применять операции к целому классу объектов вне зависимости от того, какой же, действительно, конкретный тип имеет объект).
О дним из основных языков, на котором, работают профессионалы-программисты, программируя на платформе Microsoft Dot Net, это язык C# (Си шарп), который является объектно-ориентированным императивным языком высокого уровня. Программа для примера на языке C# приведена на слайде (слайд 9). Представленная на слайде программа решает квадратное уравнение, т.е. по сути дела она содержит фрагмент, который мы уже показывали раньше, и помимо этого обвязку, которая объявляет класс Program, объявляет функцию Main, которая является точкой входа: запуская эту программу, выполняется код, написанный в этой функции и в итоге получается результат выполнения программы. Основной язык, который вы используете, программируя на платформе Microsoft в нашем компьютерном классе,- Delphi,- является также объектно-ориентированным императивным языком высокого уровня.
О
днако
(слайд 10) существуют и другие подходы
к программированию. Иногда удобнее
рассматривать процесс обработки данных
неё как какой-то набор шагов операторов,
а как функцию, примененную к этим данным.
Ну, например: решая квадратное уравнение,
мы хотим получить на входе три коэффициента
и на выходе – получить значения корней.
И процесс вычисления этой функции может
сводиться к каким-то другим функциям,
необязательно к набору шагов, а к вызову
других функций и как только мы позволяем
передавать функции как данные в качестве
аргументов другим функциям, мы получаем
очень гибкую абстрактную модель, которая
называется функциональным
программированием.
Функциональные языки очень удобны для обработки данных. В качестве примера мы приводим здесь программу для решения квадратного уравнения на объектно-ориентированном функциональном языке F# (Эф шарп). На слайде мы видим, что уравнение решается с помощью некоторой функции solv c тремя параметрами; далее мы объявляем имя -d- (дискриминант), который будет равен некоторому выражению. При этом это не то же самое, что переменная, поскольку такое объявление имени не позволяет вам потом изменять значение этой переменной. В этом случае нет понятия «ячейка памяти» - данные подаются на вход функциями и получаются на выходе. Это выражение лишь описывает синоним, который затем подставляется в выражение для вычисления результата.
И
так,
мы видим (слайд 11), что в процессе
эволюции языков программирования
создавались все новые языки:
– черными точками обозначен набор императивных языков,
– кружочками обозначен набор объектно-ориентированных языков;
– ромбиками обозначен набор функциональных языков, среди которых такие языки как: LISP, появившийся еще в 60-ые годы, и более современные языки: Haskell, OCaml и уже упомянутый язык F#.
Кроме того есть так называемые логические языки – языки, которые обладают уникальным свойством, заключающимся в том, что могут сами придумывать алгоритм выполнения задач по некоторому описанию свойств. Например, мы можем описать свойство нужного решения, и дальше с помощью внутреннего встроенного в язык процесса поиска это решение будет найдено. Однако такие языки весьма специализированны и находят свое применение в достаточно узких областях знаний и используются пока сравнительно редко. Первым логическим языком является Prolog
И
так,
хорошая новость (слайд 12): компания
Microsoft разработала Платформу
Microsoft Dot
Net, которая
позволяет нам программировать на
различных языках, объединяя их
внутри одного проекта.
Что же такое платформа Microsoft Dot Net? – это некоторая надстройка над операционной системой, которая содержит в себе небольшую виртуальную машину, способную исполнять набор инструкций, называемых byte-кодом. И этот byte-код может получаться из разных языков. Мы можем программировать на C#, можем программировать на языке Visual Basic, который очень похож на C#, имея подробный синтаксис на функциональном языке C#..
И для любителей классического программирования есть возможность программировать на C++. Помимо этого платформа Microoft Dot Net содержит библиотеку функций, которой можно пользоваться в своих программах и совершать широкий спектр действий, который поможет вам пригодиться: это манипулирование графикой, манипулирование сетевыми соединениями, доступом в Интернет, и т.д. и т.п.
З
ачем
же на платформе Dot Net
имеется такое многообразие языков?
(слайд 13)
- на самом деле различные языки удобны для решения различных задач. Например, если мы хотим операционную систему или какую-то систему реального времени, которой требуется очень высокая производительность, очень высокая скорость реакции, наверное, нам стоит обратиться к языкам C и С++ вне платформы Microsoft Dot Net, которая работает непосредственно на оборудование. Если же мы пишем корпоративные системы, web-сайты, Интернет порталы, то здесь платформа Microsoft Dot Net будет очень-очень удобна. Кстати мы можем использовать и язык C#. Язык F# очень удобен для обработки данных, если мы хотим писать компиляторы или системы, которые производят преобразования научных данных каких-то, научные расчеты или, наоборот, сбор данных из Интернет Язык C# будет очень удобен.
Мы можем также программировать игры с помощью платформы ?-XNA для Windows, Xbox и даже для мобильного телефона можем программировать на языке C#.
Богатые приложения для Интернет, для телефона также программируют на языке C#.
Помимо языков программирования нам также понадобится знать некоторые другие компьютерные языки, которые на слайде 12 указаны в скобках: XMAL (читается: ксамэл), HTML, SQL.
Ч
то
это такое? (слайд 14) – это языки, на
которых не пишутся программы, но которые
используются для различных целей,
например, разметка текста/гипертекста
для того, чтобы представлять и создавать
web интерфейс, представлять
данные и делать запросы к данным.
HTML – HyperText Markup Language – язык разметки гипертекста;
Также как и в HTML в нем используются теги. Но названия тегов могут быть произвольными, в связи с чем очень удобен для структурирования информации;
XAML – Extensible Application Markup Language – расширяемый язык разметки приложения. XAML-документ содержит разметку, описывающую внешний вид и поведение окна или страницы приложения, а связанные с ним файлы кода C# - логику приложения. Язык XAML обеспечивает разделение процесса дизайна приложения (графической части) и разработки бизнес-логики (программного кода) между дизайнерами и разработчиками.
CSS – Cascade Style Sheets – таблицы каскадных стилей; были разработаны в 1996 г. в виде дополнения к существующему стандарту HTML 3.2; они не только дополнили возможности HTML новыми средствами оформления информационного содержания, но и позволили унифицировать оформление. Соответственно, существует также:
XSL – Extensible Style Language – расширяемый язык стилевой разметки;
Важным новым на сегодняшний день является язык разметки
XML – Extensible Markup Language – расширяемый язык разметки (первоначально XHTML – Extensible HyperText Markup Language – расширяемый язык разметки гипертекста).
KML – Keyhole Markup Language – язык разметки географических данных, использующийся для отображения в таких бесплатных программах как Google Earth или Microsoft Virtual Earth.
Р
ассмотрим
их подробнее. (слайд 15)
Язык HTML – это язык разметки, для которой необходим при Интернет программировании. Как формируется Интернет страница? – по сути дела это текст, который дополнен специальными тегами, которые здесь пишутся в таких угловых скобочках и тэги позволяют указывать, как же мы хотим, чтобы браузер отобразил текст. Т.е. это не инструкция для выполнения, а декларативные указания на то, как бы было хорошо этот текст нарисовать на экране. В данном примере мы видим, что слово Привет! – это заголовок 1-го уровня, он заключается в тэги <h1></h1> - открывающий тэг <h1> и закрывающий тэг </h1> со слэшем. Слово пример здесь выделено жирным и, соответственно оно выделяется тэгом <b></b> от слова bold для того чтобы оно было напечатано жирным. Тэг <p></p> обозначает абзац и т.д.. Тэг <p> … они все вложенные, они выполняют роль скобок. Другим примером языка разметки интерфейса является язык XMAL, который используется для создания сервер-lite приложений или богатых приложений для Windows и пишется на платформе Dot Net.
И
дея
языка HTML нашла свое
отражение в более общем языке . (слайд
16) под названием XML
(читается эксэмэль) – Extenced
Markup Language.
Этот язык позволяет представлять любые
данные, имеющие слабоструктурированную
такую иерархическую древовидную
структуру. И XML на
самом деле представляет собой семейство
языков, мы можем сами придумывать свои
языки на базе XML, важно,
чтобы они имели общее свойство, вложенные
тэги, которые правильно построены –
без нарушения вложенности и по определенным
правилам. Ну, например, мы можем
использовать для описания людей … ,
пример которого приведен здесь. Описываем
человека, его атрибуты (имя, фамилия) и
вложенные тэги: <twitter>
- account, <publication>
– список публикаций. Для запросов к
таким данным может использоваться язык
под названием XQuery, который
позволяет делать различные срезы XML
данных, преобразуя их и выбирая только
те данные, которые нам нужны. Соответственно,
если мы создаем какое-то приложение, мы
можем использовать XML для
совершенно различных целей: для передачи
по Интернет с последующей обработкой,
для хранения данных на диске и т.д. и
т.п.
Программист – это реляционная база данных, в которой хранятся и эффективно обрабатываются большие объемы данных. (слайд 17).
Реляционные базы данных состоят из набора таблиц, например, если мы хотим объединить людей и связанные с ними публикации, нам потребуется, как минимум, две таблицы: одна – для людей и вторая – для публикации, в которой есть номер – ссылка на таблицу с автором. И для того, чтобы такие данные из таблиц извлекать, как-то ими манипулировать, служит язык SEQUEL (читается сиквел) или, как его еще называют, SQL - Structured Query Language – язык структурированных запросов. Предположим, нам хочется выбрать имя автора и название публикации. В этом случае мы пишем запрос, который приведен здесь на слайде: мы выбираем People.Name из таблицы публикаций, поле Title. И нам нужно объединить эти две таблицы, чтобы попадали только те записи, где человек, номер человека совпадает с номером человека из таблицы публикаций. Поэтому мы пишем соответствующее условие.
Более сложный случай: нам нужно выбрать фамилии и имена людей и количество публикаций, которые с ними связаны. В этом случае мы делаем один запрос, выбирая имя из таблицы People и делаем подзапрос, который считает все публикации с соответствующим идентификатором человека.
Таким образом, с помощью языка SQL мы можем делать достаточно хитрые преобразования данных, но, тем не менее, важно понимать, что язык SQL в чистом виде – это не язык программирования, поскольку на нем нельзя вычислять произвольные функции. Хотя тот вариант SQL, который присутствует в современных системах управления базами данных содержит в себе все необходимые конструкции и позволяет писать на нем программы. В этом случае он называется T-SQL (Transact-SQL) Однако не в этом его основная цель. Его основная цель – предоставлять возможность комбинировать таблицы по правилам реляционной алгебры.
Заключение
Таким образом, из всего многообразия императивных языков программирования, наиболее значимыми языками, являются язык С# и язык Delphi (Object Pascal). С их помощью создаются web сайты, Windows приложения, игры, программы для телефонов и мн.другое. Поэтому, если Вас заинтересовало программирование и вы хотите узнать его по-глубже, дерзайте – начинайте пробовать и создавать какие-то свои программные продукты и приложения.
Основная литература для практических занятий:
1. Архангельский. Программирование на Delphi 7 (скинуть в эл.виде)