Лекция 1-2 (слайд 6)

Сегодня у нас будет установочная лекция (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 интерфейс, представлять данные и делать запросы к данным.

HTMLH yper T ext M arkup L anguage – язык разметки гипертекста;

Также как и в HTML в нем используются теги. Но названия тегов могут быть произвольными, в связи с чем очень удобен для структурирования информации;

XAML – E x tensible A pplication M arkup L anguage – расширяемый язык разметки приложения. XAML-документ содержит разметку, описывающую внешний вид и поведение окна или страницы приложения, а связанные с ним файлы кода C# - логику приложения. Язык XAML обеспечивает разделение процесса дизайна приложения (графической части) и разработки бизнес-логики (программного кода) между дизайнерами и разработчиками.

CSSC ascade S tyle S heets – таблицы каскадных стилей; были разработаны в 1996 г. в виде дополнения к существующему стандарту HTML 3.2; они не только дополнили возможности HTML новыми средствами оформления информационного содержания, но и позволили унифицировать оформление. Соответственно, существует также:

XSL – E x tensible S tyle L anguage – расширяемый язык стилевой разметки;

Важным новым на сегодняшний день является язык разметки

XML – E x tensible M arkup L anguage – расширяемый язык разметки (первоначально XHTML – E x tensible H yper T ext M arkup L anguage – расширяемый язык разметки гипертекста).

KMLK eyhole M arkup L anguage – язык разметки географических данных, использующийся для отображения в таких бесплатных программах как 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) Однако не в этом его основная цель. Его основная цель – предоставлять возможность комбинировать таблицы по правилам реляционной алгебры.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: