Языки программирования и программное обеспечение
История математического моделирования и вычислительной математики
Математическое моделирование.
- Его истоки относятся к XVIIIв. Первые модели были предложены в 1759г. экономистом Куинсни.
- Первой попыткой представить экономику в виде взаимосвязанной статистической модели было создание французским ученным XVIIIв. Ф. Кенэ его ''Экономической таблицы ''. Это первая в истории моделирования макроэкономическая модель натуральных и денежных потоков. Она явилась прообразом модели Леонтьева.
- Ряд моделей спроса и предложения были разработаны в 1874г. французским ученым Вальрасом.
- Математические модели систем массового обслуживания разработаны Эрлангом в 1909г.
- В 1943г. рождается наука, получившая название ''исследование операций''. Это наука о применении математических моделей при принятии решений. Развивается научная база моделирования. В частности, разрабатывается линейное программирование, основы которого были заложены в работах Фон Неймана (1937г.) и Конторовича (1939г.).
- Широкое применение математического моделирования связано с созданием вычислительных машин. В 1944г. в США построена первая вычислительная машина ЭНИАК; в 1946г.- вычислительная машина ЮНИВАК; в 1951г. в СССР создана машина – БЭСМ-2. Вычислительные машины обеспечили техническую базу реализации математических моделей.
- Изобретение компьютера в середине XX века означало создание универсального инструмента для математических вычислений.
Прикладные и инструментальные программы
AutoCAD
AutoCAD — программа для автоматизированного проектирования и черчения. Её разработчик — компания Autodesk — выпустила первую версию этого продукта в далеком 1982 году. С тех пор более 30 лет AutoCAD совершенствуется по мере развития цифровых технологий.
AutoCAD наиболее востребован в следующих отраслях:
- Архитектура и строительство.
- Промышленный дизайн и дизайн интерьеров.
- Конструкторские бюро.
- Телекоммуникационные компании.
- Геодезия и картография.
Преимущества AutoCAD перед обычными чертежами:
- Абсолютная точность всех линий.
- Возможность вносить в чертеж корректировки любых масштабов и сложности.
- Неограниченное рабочее пространство.
- Удобство электронного формата — чертеж можно быстро скопировать, подготовить его измененную версию, переслать по электронной почте.
- За счет работы со слоями можно создавать сложные чертежи с наложением объектов — например, генеральные планы зданий, на которых различные системы коммуникаций отображаются на отдельных слоях.
- Возможность использовать старые наработки — готовые чертежи и 3D-модели различных типовых объектов.
- Автоматизация многих операций при подготовке чертежей — например, автоматическое проставление размеров для отрезков, подсчет площадей, объемов.
- Богатый инструментарий работы с трехмерными объектами — построение изометрических проекций на основе двухмерных чертежей, имитация освещенности.
- Простая интеграция с другими программами компании Autodesk — 3ds Max, Corel Draw, Archicad, Inventor, Civil 3D.
MathCad
Mathcad – это среда вычислений, ориентированная на работу с документами, позволяет пользователям быстро и просто создавать детализированные технические документы, которые включают сложные вычисления, используя «живые» математические примечания с текстом, изображениями и диаграммами.
пакеты программ
Пакет прикладных программ (application program package) – комплекс взаимосвязанных программ для решения задач определенного класса конкретной предметной области.
Пакеты прикладных программ (ППП) служат программным инструментарием решения функциональных задач и являются самым многочисленным классом программных продуктов. В данный класс входят программные продукты, выполняющие обработку информации различных предметных областей.
Можно выделить следующие виды ППП:
- Общего назначения. Примеры: текстовый процессор, электронные таблицы, графический редактор, СУБД
- Офисные пакеты. Для обеспечения деятельности офиса. Включают органайзеры, средства OCR и т. п.
- Проблемно-ориентированные. Для предметных областей, в которых возможна типизация структур данных, алгоритмов обработки и функций управления. Примеры: бухгалтерский учёт, управление персоналом.
- САПР
- Настольная издательская система
- Системы искусственного интеллекта. Системы с диалогом на естественном языке, экспертные системы и т. п.
обработка видео
Видеоредакторы — это программы для создания и обработки цифрового видео.
С их помощью можно:
• вводить данные с видеокамеры;
• корректировать цвет кадров;
• добавлять, переставлять и удалять фрагменты фильма;
• добавлять звуки и титры;
• сохранять фильм в различных цифровых видеоформатах;
• создавать DVD-диски.
Среди коммерческих видеоредакторов наиболее популярны Adobe Premier, Pinnacle Studio, VideoStudio Pro, Sony Vegas Pro. На компьютерах фирмы Apple используют программу iMovie.
Существуют и бесплатные видеоредакторы, например программа Kdenlive для операционной системы Linux, программы VirtualDub и VSCD Free Video Editor для Windows и кроссплатформенная программа Avidemux.
обработка графики
Графические редакторы — это программы для создания и редактирования изображений.
- Изображения, хранящиеся в компьютере, делятся на растровые и векторные. С ними нужно работать по-разному, поэтому существуют отдельные программы для редактирования растровой и векторной графики, которые часто называют растровыми и векторными графические редакторами.
- Растровые редакторы предназначены для: обработки фотографий; подготовки изображений к печати; создания и редактирования изображений для веб-сайтов. Лучшим профессиональным растровым редактором считается программа Adobe Photoshop. Существуют её версии для операционных систем Windows и Mac OS (для компьютеров фирмы Apple). Стандартным приложением Windows является растровый редактор Paint, но для сложной обработки (например, для цветокоррекции фотографий) его возможности недостаточны. Бесплатная программа Gimp — кроссплатформенная, она работает как в Windows, так и в Linux.
- В последнее время были созданы бесплатные «онлайновые» редакторы (например, PIXLR), которые позволяют обрабатывать изображения на специальной веб-странице в Интернете, без установки дополнительного ПО на компьютер пользователя.
- Векторные редакторы используются для подготовки: художественных иллюстраций; технических иллюстраций (схем, графиков); логотипов, визиток, плакатов; изображений для веб-сайтов (иконок, кнопок). Среди профессиональных векторных редакторов можно назвать двух лидеров — программы Adobe Illustrator и CorelDraw. В свободно распространяемый пакет OpenOffice.org входит векторный редактор OpenOffice.org Draw. Бесплатный редактор Inkscape — ещё одна кроссплатформенная программа, работающая как в Windows, так и в Linux.
- Для работы с трёхмерными объектами используют программы специального класса — программы 3D-моделирования, которые позволяют: художественных иллюстраций; определить форму (геометрию) объектов сцены; задать материалы для объектов; установить источники света; определить точки наблюдения (виртуальные камеры); создать анимацию с трёхмерными объектами; выполнить рендеринг, т. е. построить изображение трёхмерных объектов и сцены на плоскости или последовательность кадров анимации с учётом свойств объектов и источников света. Среди программ 3D-моделирования, работающих в системе Windows, наиболее популярна 3D Studio MAX. В области кино и телевидения стандартом считается кроссплатформенная программа Мауа, у которой существуют версии для операционных систем Windows, Linux и Mac OS. Среди свободно распространяемых программ наиболее известна кроссплатформенная программа Blender.
обработка звука
Аудиоредакторы — это программы для обработки звуковых файлов.
С их помощью можно:
• загружать, редактировать и сохранять звуковые файлы разных форматов;
• записывать звук с микрофона;
• вырезать фрагменты из звукового файла;
• соединять звуковые фрагменты в один файл;
• изменять громкость и темп звука;
• удалять шумы.
Для простой обработки звука можно использовать бесплатную кроссплатформенную программу Audacity. Известные профессиональные аудиоредакторы — Adobe Audition и Sound Forge.
обработка текста
Обработка текстов — одно из первых по значимости (после собственно вычислительных задач и управления приборами), приложениий компьютера. Важность этой задачи заключается не только в огромных возможностях, предоставляемых компьютером для набора и редактирования, но и в том, что и взаимодействие пользователя с системой, и хранение и обмен данными в системе зачастую происходят именно в текстовой форме.
Различают две основные группы программ подготовки текстовых документов: текстовые редакторы и текстовые процессоры.
Текстовыми редакторами называют программы, создающие текстовые файлы без элементов форматирования.
Все многообразие современных текстовых редакторов условно можно разбить на три основные группы:
- простейшие текстовые редакторы, обладающие минимумом возможностей и способные работать с документами в обычном текстовом формате.txt, который, как известно, при всей своей простоте и всеобщей поддержке совершенно не позволяет более или менее прилично форматировать текст. К этой группе редакторов можно отнести как входящие в комплект поставки ОС семейства Windows редакторы WordPad и совсем малофункциональный NotePad (Блокнот), и множество аналогичных продуктов других производителей (Atlantis, EditPad, Aditor Pro, Gedit и т.д.).
- промежуточный класс текстовых редакторов включает в себя достаточно широкие возможности по части оформления документов. Они работают со всеми стандартными текстовыми файлами(TXT, RTF, DOC). К таким программам можно отнести Microsoft Works, Лексикон.
- к третьей группе относятся мощные текстовые процессоры, такие, как Microsoft Word или StarOffice Writer. Они выполняют практически все операции с текстом. Большинство пользователей использует именно эти редакторы в повседневной работе.
Технологии программирования
сценарное веб-программирование
Скрипт (script) – это понятие в программировании, обозначающее последовательность команд для выполнения конкретных операций. По сути, это небольшая программа, заточенная под определенное действие.
- Скрипты используются в веб-разработке, в частности, чтобы автоматизировать операции.
- Существуют скриптовые языки программирования, заточенные под их написание, – так называемые «языки сценариев».
- Скриптовые ЯП обычно интерпретируемые, а не компилируемые.
С помощью сценариев выполняется огромное количество рутинных операций, например:
- сбор статистики. Счетчики посещаемости, аналитические системы – все они используют скрипты, которые подсчитывают нужную специалистам информацию. Чаще всего такой код написан на JS;
- обращения к БД. Сообщение между базой данных и интерфейсом сайта происходит постоянно, и его описывают скриптами, чаще всего на языке PHP;
- написание комментариев и ведение гостевых книг. Сервис добавления новых комментариев на сайт тоже работает за счет сценариев на PHP или JavaScript;
- динамическая подгрузка информации на странице без ее обновления. Например, кнопка «Показать еще» на странице магазина. Такие функции реализуются за счет технологии AJAX, в основе которой лежит работа скриптов на JavaScript;
- динамическое отображение элементов сайта. Меню, страницы фильтров интернет-магазина и многие другие элементы генерируются автоматически с помощью скриптов.
визуальное программирование
Язык визуального программирования — это такой язык, который позволяет программисту создавать программы, манипулируя графическими элементами, а не печатая текстовые команды.
- Известным примером является Scratch, язык визуального программирования родом из MIT, который используется для обучения детей. Его преимущества заключаются в том, что он делает программирование более доступным для новичков и не-программистов.
- Технологии визуального программирования появились давно. Сама их концепция основана на парадигме программирования потока данных — dataflow programming. Этот подход создали еще в 70-х годах прошлого века. Он заключается в том, что любую программу можно представить в виде графика, который отображает поток данных между компонентами системы. К сожалению, эта парадигма сейчас находится весьма далеко от трендов в разработке программного обеспечения.
объекты
Объект — это набор переменных и функций, как в традиционном функциональном программировании. Переменные и функции и есть его свойства.
- Атрибуты — это переменные, конкретные характеристики объекта, такие как цвет поля или имя пользователя.
- Методы — это функции, которые описаны внутри объекта или класса. Они относятся к определенному объекту и позволяют взаимодействовать с ними или другими частями кода.
- В программировании объекты — это структуры данных: пользователь, кнопка, сообщение. У них, как и у реальных предметов, могут быть свойства: цвет, содержание или имя пользователя. А чтобы объединить между собой объекты с похожими свойствами, существуют классы.
модули
Модульное программирование - это процесс разделения компьютерной программы на отдельные подпрограммы.
Модуль - это отдельный программный компонент. Он часто может использоваться в различных приложениях и функциях с другими компонентами системы. Подобные функции сгруппированы в одном и том же блоке программного кода, а отдельные функции разрабатываются как отдельные блоки кода, так что код может быть повторно использован другими приложениями.
Преимущества использования модульного программирования включают в себя:
- Меньше кода должно быть написано.
- Для повторного использования может быть разработана единственная процедура, исключающая необходимость многократного повторного ввода кода.
- Программы могут быть разработаны проще, потому что небольшая команда имеет дело только с небольшой частью всего кода.
- Модульное программирование позволяет многим программистам совместно работать над одним приложением.
- Код хранится в нескольких файлах.
- Код короткий, простой и понятный.
- Ошибки могут быть легко идентифицированы, так как они локализованы в подпрограмме или функции.
- Один и тот же код может использоваться во многих приложениях.
- Область видимости переменных можно легко контролировать.
подпрограммы
Подпрограмма включает в себя описание действия, выполнение которого происходит в основной программе после указания имени подпрограммы и фактических параметров. С использованием процедур и функций любой алгоритм может быть разбит на части, то есть осуществляется декомпозиция задачи, что обеспечивает структурированность алгоритма.
- Подпрограмма и модуль являются самостоятельными программными единицами, имеющими имя и параметры.
- Процедуры и функции являются подпрограммами. Результат функции присваивается ее имени.
- Процедура может содержать два результата и более.
Среди ключевых особенностей подпрограмм выделяют следующие моменты:
- За счет таких компонентов становится возможным уменьшение объема исходного кода.
- Используя подпрограммы, разработчик сможет обеспечить лучшую работоспособность написанного кода. Ошибки и крупные баги сведутся к минимуму.
- Повышается читабельность ПО. Некоторые коды смогут достаточно быстро разобрать даже те, кто только начал путь изучения особенностей разработки на выбранном языке.
- Схожие программы удастся создавать быстрее. Это получается за счет применения «готовых блоков» кода в новых проектах.
- Функции и процедуры нужны для того, чтобы избавиться от крупных и масштабных алгоритмов. Программное обеспечение удастся «разбить» на небольшие задачи. За счет такого приема становится возможным абстрагирование от деталей.
Декларативные языки
Cobol
COBOL (от COmmon Business-Oriented Language) — один из старейших языков программирования, разработанный прежде всего для написания программ для экономической сферы.
- Спецификация языка была создана в 1959 году. Создатели языка ставили своей целью сделать его машиннонезависимым и максимально приближенным к естественному английскому языку. Обе цели были успешно достигнуты; программы на COBOL считаются понятными даже неспециалистам, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях (самодокументирующиеся программы).
- Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения. К числу других плюсов COBOL обычно относят его структурированность. Довольно мощные компиляторы с этого языка разработаны для персональных компьютеров. Некоторые из них столь эффективны, что программу, отлаженную на персональном компьютере, нетрудно перенести на большие ЭВМ.
- Перечисляя минусы, нельзя не вспомнить о том, что на Коболе можно запрограммировать лишь простейшие алгебраические вычисления. Для сложных инженерных расчетов этот язык не годится.
- Практически все банковские автоматы работают на старом языке программирования COBOL (Common Business-Oriented Language), которому почти 60 лет. Он был разработан в 1959 году как стандартный язык для бизнеса и до сих пор используется в банках по всему миру. В 2014 году 92 из 100 ведущих банков и 71% компаний из списка Fortune 500 пользовались языком COBOL на своих центральных компьютерах.
Prolog
Prolog (от “PROgramming in LOGic”) — декларативный язык программирования общего назначения.
Prolog был создан в 1972 с целью сочетать использование логики с представлением знаний. С тех пор у него появился ряд диалектов, расширяющих основу языка различными возможностями.
- Prolog — один из старейших и все еще один из наиболее популярных языков логического программирования, хотя он значительно менее популярен, чем основные императивные языки. Он используется в системах обработки естественных языков, исследованиях искусственного интеллекта, экспертных системах, онтологиях и других предметных областях, для которых естественно использование логической парадигмы.
- Создан в 1972 Аланом Колмероэ на основе языка предикатов математической логики дизъюнктов Хорна.
Lisp
Лисп — семейство языков программирования, программы и данные в которых представляются системами линейных списков символов.
- Лисп был создан Джоном Маккарти для работ по искусственному интеллекту и до сих пор остаётся одним из основных инструментальных средств в данной области.
- Применяется он и как средство обычного промышленного программирования, от встроенных скриптов до веб-приложений массового использования, хотя популярным его назвать нельзя.
- LISP’ы – это микропрограммы, которые дополняют функционал Autocad и способствуют автоматизации рутинных операций.
- Именно в Lisp впервые появился сборщик мусора — один из основных элементов Java, C#, Python и других языков с автоматическим управлением памятью. Благодаря ему программисты манипулируют списками и сложными структурами данных, не беспокоясь о висячих ссылках и утечках памяти.
- На Lisp написан софт, который мониторит состояние самолётов — например «Боингов» и «Эйрбасов».
Процедурные языки
Python
Python — это высокоуровневый язык программирования, отличающийся эффективностью, простотой и универсальностью использования. Он широко применяется в разработке веб-приложений и прикладного программного обеспечения, а также в машинном обучении и обработке больших данных. За счет простого и интуитивно понятного синтаксиса является одним из распространенных языков для обучения программированию.
- Создатель Python — нидерландский инженер Гвидо ван Россум, известный энтузиаст разработки, который сейчас работает в Microsoft.
- Язык Python был задуман как потомок языка программирования ABC.
C
C — это достаточно "древний" язык программирования, он сформировался в начале 70-х. Не смотря на это, C — живой язык в том смысле, что он активно применяется в настоящее время. Он был придуман, использовался и используется для написания частей программного кода Unix-подобных операционных систем. Также на нем пишут утилиты, компиляторы и реже прикладные программы. Поэтому C называют системным языком программирования.
- Разработан в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би.
- Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем.
- Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.
Pascal
Pascal — это универсальный язык программирования, отличающийся строгой структурой и типизацией переменных, а также интуитивно понятным синтаксисом. Был разработан швейцарским ученым Никлаусом Виртом в 1970 году на базе языка Алгол-68 для обучения студентов структурному программированию.
- Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал одну из первых в мире механических машин, складывающую два числа.
- Pascal относится к числу самых распространенных языков программирования в мире и по праву считается одним из наиболее удобных для обучения. На его базе были разработаны другие диалекты, языки и среды разработки, такие как Delphi, Object Pascal, Turbo Pascal, Modula-2 и другие.
Алгол
Алго́л (англ. Algol от algorithmic language — «алгоритмический язык») — название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ.
- Разработан комитетом по языку высокого уровня IFIP в 1958-1960 годах (Алгол 58, Алгол 60). Кардинально переработан в 1964-1968 годах (Алгол 68).
- Один из первых языков высокого уровня. Был популярен в Европе, в том числе в СССР, в качестве языка как практического программирования, так и академического языка (языка публикации алгоритмов в научных работах), но в США и Канаде не смог превзойти распространённый там Фортран.
- Оказал заметное влияние на все разработанные позднее императивные языки программирования — в частности, на язык Pascal.
- Обычно названием Алгол (без уточнения версии) именуют Алгол 60, в то время как Алгол 68 рассматривается как самостоятельный язык.
Basic
Бе́йсик (BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих) — семейство высокоуровневых языков программирования.
Был разработан в 1964 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.
Язык создавался как инструмент, с помощью которого студенты-непрограммисты могли самостоятельно создавать компьютерные программы для решения своих задач. Получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров. К настоящему моменту претерпел существенные изменения, значительно отойдя от характерной для первых версий простоты, граничащей с примитивизмом, и превратившись в достаточно ординарный язык высокого уровня с типичным набором возможностей. Используется как самостоятельный язык для разработки прикладных программ, главным образом, работающих под управлением ОС Windows различных версий. Также широко распространён в качестве встроенного языка прикладных программных систем различного назначения и в качестве языка для программируемых калькуляторов.
Fortran
Фортра́н — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие.
- Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM.
- Название Fortran является сокращением от FORmula TRANslator (формульный транслятор).
- Фортран широко используется в первую очередь для научных и инженерных вычислений.
- Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм.
мнемокод
Базовой конструкцией языка ассемблера является мнемоника, или мнемокод — краткое символьное представление команды процессора. Как правило, она состоит из нескольких символов, обозначающих производимое действие (например, mov
— для пересылки из одного регистра в другой, add
— для сложения значений и т.д.). Также в мнемонику может входить объект, над которым производится операция (регистр, память, стек), либо другие особенности (влияние на регистр флагов, условия исполнения и т.д.), однако в других диалектах те же особенности могут задаваться в операндах.
язык ассамблера
Язык ассемблера — тип языка программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком.
Появился в 1949г.
На языке ассемблера пишут:
- программы, требующие максимальной скорости выполнения: основные компоненты компьютерных игр, ядра операционных систем реального времени и просто критичные по времени куски программ;
- программы, взаимодействующие с внешними устройствами: драйверы, программы, работающие напрямую с портами, звуковыми и видеокартами;
- программы, использующие полностью возможности процессора: ядра многозадачных операционных систем, серверы;
- программы, полностью использующие возможности операционной системы: вирусы, антивирусы, защита от несанкционированного доступа, программы обхода защиты от несанкционированного доступа.
Достоинства языка ассемблера
- максимальная оптимизация программ, как по скорости выполнения, так и по размеру;
- максимальная адаптация под соответствующий процессор
Недостатки языка ассемблера
- трудоемкость написания программы больше, чем языке высокого уровня;
- трудоемкость чтения;
- непереносимость на другие платформы, кроме совместимых
- ассемблер малопригоден для совместных проектов
машинный код команд
Набор команд конкретной вычислительной машины, который интерпретируется на аппаратном уровне или с помощью микропрограмм самой машины., называется машинным кодом.
Язык самой машины – машинный код – очевиден и однозначен для каждого вида компьютеров. Но эта последовательность нулей и единиц противоестественна для памяти человека, хотя несколько поколений программистов работали только в машинных кодах. Программа может состоять из миллионов комбинаций единиц и нулей, и ошибка лишь в одном знаке приведет к неправильной работе всей программы. При всех различиях языков программирования все они, в конечном счете, сводятся к языкам высокого и низкого уровня. «Низкий» не значит «плохой». Операторы такого языка близки к машинному коду. К ним относятся языки ассемблера, в которых двоичные последовательности были заменены символами (мнемониками).
- "Словами" машинного языка являются машинные инструкции, которые бывают постоянной и диапазонной длины.