Эволюция языков программирования

Поиск Лекций


эволюция и классификация языков программирования.

Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ.

Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением. В более абстрактном виде ЯП является средством создания программных моделей объектов и явлений внешнего мира.

Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Чтобы понимать тенденции развития ЯП, нужно знать движущие силы их эволюции. Для выяснения этого вопроса будем рассматривать ЯП с различных точек зрения.

1) Во-первых, ЯП является инструментом программиста для создания программ. Для создания хороших программ нужны хорошие ЯП. Поэтому одной из движущих сил эволюции ЯП является стремление разработчиков к созданию более совершенных программ.

2) Во-вторых, процесс разработки программы можно сравнивать с промышленным производством, в котором определяющими факторами являются производительность труда коллектива программистов, себестоимость и качество программной продукции. Создаются различные технологии разработки программ (структурное, модульное, объектно-ориентированное программирование и другие), которые должны поддержи­ваться ЯП. Поэтому второй движущей силой эволюции ЯП является стремление к по­вышению эффективности процесса производства программной продукции.

3) В-третьих, программы можно рассматривать как аналог радиоэлектронных уст­ройств обработки информации, в которых вместо радиодеталей и микросхем исполь­зуют конструкции ЯП. Как и электронные устройства, программы могут быть простей­шими (уровня детекторного приемника) и сложными (уровня автоматической косми­ческой станции), при этом уровень инструмента должен соответствовать сложности изделия. Поэтому третьей движущей силой является увеличение разнообразия и повышение сложности задач, решаемых с помощью ЭВМ.

4) В-четвертых, совершенствование самих ЭВМ приводит к необходимости создания языков, максимально реализующих новые возможности ЭВМ.

5) В-пятых, программы являются интеллектуальным продуктом, который нужно нака­пливать и приумножать. Но программы, как и технические изделия, обладают свойст­вом морального старения, одной из причин которого является их зависимость от типа ЭВМ и операционной среды. Поэтому ЯП должен обеспечивать продолжительный жизненный цикл программы. Стремление к этому и является движущей силой развития ЯП.

ЯП можно классифицировать по следующим признакам:

1) По степени ориентации на специфические возможности ЭВМ ЯП делятся на:
— машинно-зависимые;
— машинно-независимые.
К машинно-зависимым ЯП относятся машинные языки, ассемблеры и автокоды, использующиеся в системном программировании. Программа на машинно-не­зависимом ЯП после трансляции на машинный язык становится машинно-зависимой.

2) По степени детализации алгоритма получения результата ЯП делятся на:
— языки низкого уровня;
— языки высокого уровня;
— языки сверхвысокого уровня.
3) По степени ориентации на решение определенного класса задач:
— проблемно-ориентированные;
— универсальные.
4) По возможности дополнения новыми типами данных и операциями:
— расширяемые;
— нерасширяемые.
5) По возможности управления реальными объектами и процессами:
— языки систем реального времени;
— языки систем условного времени.

6) По способу получения результата:
— процедурные;
— непроцедурные.
7) По типу решаемых задач:
— языки системного программирования;
— языки прикладного программирования.

8) Непроцедурные языки по типу встроенной процедуры поиска решений:
— реляционные;
— функциональные;
— логические.
Специализированные языки.


Фортран (1954 год создания)

APL (1957)

Lisp (1958)

Cobol (1960)

Algol (1960)

Snobol (1962)

BASIC (1963)

SETL (1969)

Pascal (1970)

C (1972) и С++ (1986)

Ada (1983) и Ada95 (1995)

JavaScript

VBScript

Perl

Python

Simula

Smalltalk (1972)

Eiffel

Оccam (1982)


В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом (John Backus) был создан язык программирования Fortran.

Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от осо­бенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ас­семблера, была концепция подпрограмм. Напомним, что это современные компью­теры поддерживают подпрограммы на аппаратном уровне, предоставляя соответст­вующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortran’а была процессом от­нюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как син­таксические единицы вообще не использовались. Это порождало массу возможно­стей для скрытых ошибок, таких, например:

В Фортране следующая конструкция описывает «цикл for до метки 10 при изменении индекса от 1 до 100»:
DO 10 I=1,100
Если здесь заменить запятую на точку, то получится оператор присваивания:
DO10I = 1.100
Говорят, что такая ошибка заставила ракету взорваться во время старта.

Язык Фортран использовался (и используется по сей день) для научных вычислений. Он страдает от отсутствия многих привычных языковых конструкций и атрибутов, компилятор практически никак не проверяет синтаксически правильную программу с точки зрения семантической корректности (соответствие типов и проч.). В нем нет поддержки современных способов структурирования кода и данных. Это осознавали и сами разработчики. По признанию самого Бэкуса, перед ними стояла задача скорее разработки компилятора, чем языка. Понимание самостоятельного значения языков программирования пришло позже.

6.2. APL

В 1957 году была предпринята попытка создания языка для описания математической обработки данных. Язык был назван APL (Application Programming Language). Его от­личительной особенностью было использование математических символов (что за­трудняло применение на текстовых терминалах; появление графических интерфей­сов сняло эту проблему) и очень мощный синтаксис, который позволял производить множество нетривиальных операций прямо над сложными объектами, не прибегая к разбиению их на компоненты. Широкому применению помешало, как уже отмечалось, использование нестандартных символов как элементов синтаксиса.

6.3. Lisp и ему подобные языки

В 1958 году появился язык Lisp — язык для обработки списков. Получил достаточно широкое распространение в системах искусственного интеллекта. Имеет несколько потомков: Planner (1967), Scheme (1975), Common Lisp (1984). Многие его черты были унаследованы современными языками функционального программирования.

6.4. Cobol

В 1960 году был создан язык программирования Cobol.

Он задумывался как язык для создания коммерческих приложений, и он стал тако­вым. На Коболе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими масси­вами данных. Популярность Ко­бола столь высока, что даже сейчас, при всех его недостатках (по структуре и за­мыслу Кобол во многом напоминает Фортран), появляются новые его диалекты и реа­лизации. Так появилась реализация Кобола, совместимая с Microsoft .NET, что потребовало, вероятно, внесения в язык некоторых черт объектно-ориентирован­ного языка.

Основные понятия алгоритмических языков программирования.

Алгоритмический язык содержит подобные элементы, только слова называют элемен- тарными конструкциями, словосочетания-выражениями, предложения-операторами. Символы, элементарные конструкции, выражения и операторы составляют иерархическую структуру, поскольку элементарные конструк- ции образуются из последовательности символов, выражения-это последо- вательность элементарных конструкций и символов, а оператор-последо- вательность выражений, элементарных конструкций и символов. ОПИСАНИЕ ЯЗЫКА есть описание четырех названных элементов. Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений-это правила образования любых выражений, имеющих смысл в данном языке.

Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке. Описание каждого элемента языка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определе- ния устанавливают правила построения элементов языка. Семантика опре- деляет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения. СИМВОЛЫ языка-это основные неделимые знаки, в терминах которых пи- шутся все тексты на языке. ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ -это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка. ВЫРАЖЕНИЕ в алгоритмическом языке состоит из элементарных конс- трукций и символов, оно задает правило вычисления некоторого значе- ния.

ОПЕРАТОР задает полное описание некоторого действия, которое необ- ходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в СОСТАВНОЙ ОПЕРАТОР или БЛОК. Действия, заданные операторами, выполняются над ДАННЫМИ. Предложения алгоритмического языка, в которых даются сведения о типах данных, называются ОПИСАНИЯМИ или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторов образует ПРОГРАММУ на алгоритмическом языке. В процессе изучения алгоритмического языка необходимо отличать алгоритмический язык от того языка, с помощью которого осуществляется описание изучаемого алгоритмического языка. Обычно изучаемый язык на- зывают просто языком, а язык, в терминах которого дается описание изучаемого языка — МЕТАЯЗЫКОМ.

 

©2015-2018 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Нарушение авторских прав и Нарушение персональных данных

Классификация языков программирования, их эволюция

Разные типы процессоров имеют разные наборы команд.

В случае если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, ᴛ.ᴇ. является машинно-зависимым, он принято называть языком программирования низкого уровня. В данном случае ʼʼнизкий уровеньʼʼ не значит ʼʼплохойʼʼ. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

Языками низкого уровня являются всœе языки ассемблеров, которые представляет каждую команду машинного кода, не в виде чисел, а с помощью условных символьных обозначений, называемых мнемониками.

Однозначное преобразование одной машинной инструкции в одну команду ассемблера принято называть транслитерацией. Так как наборы инструкций для каждой модели процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык ассемблера, и написанная на нем программа должна быть использована только в этой среде.

С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всœем возможностям процессора, но при этом:

— требуется очень хорошо понимать устройство компьютера,

— затрудняется отладка больших приложений,

— результирующая программа не должна быть перенесена на компьютер с другим типом процессора.

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

Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, в связи с этим создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше.

Языки программирования принято делить на пять поколений:

Первое поколение. Начало 50-х годов, когда первые компьютеры только появились на свет. Первый язык ассемблера, созданный по принципу ʼʼодна инструкция – одна строкаʼʼ.

Второе поколение. Конец 50-х – начало 60-х годов. Был разработан символический ассемблер, в котором появилось понятие переменной.

Третье поколение. 60-е годы. Появились универсальные языки высокого уровня, с их помощью удается решать задачи из любых областей. Такие качества новых языков, как относительная простота͵ независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Подавляющее большинство языков этого поколения успешно применяется и сегодня.

Четвертое поколение. Начало 70-х годов по настоящее время. Языки этого поколения предназначены для реализации крупных проектов, повышают их надежность и скорость создания, ориентированы на специализированные области применения, и используют не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. В эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода.

Пятое поколение. Середина 90-х годов по настоящее время. К этому поколению относятся системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Главная идея, которая закладывается в эти языки, – возможность автоматического формирования результирующего текста на универсальных языках программирования. Инструкции же вводятся в компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием.


Читайте также

  • — Поколения языков программирования

    Языки программирования также можно разделять на поколения: – языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения; – языки второго поколения: с мнемоническим представлением команд, так называемые автокоды; … [читать подробнее].

  • — Поколения языков программирования

    Языки моделирования При создании программ и формировании структур баз данных нередко применяются формальные способы их представления – форматные нотации, с помощью которых можно визуально (в виде диаграмм) представить таблицы баз данных, поля, объекты… [читать подробнее].

  • — Поколения языков программирования

    Языки программирования принято делить на пять поколений: — Первое поколение.

    Начало 50-х годов, когда первые компьютеры только появились на свет. Первый язык ассемблера, созданный по принципу «одна инструкция – одна строка». — Второе поколение. Конец 50-х – начало 60-х годов…. [читать подробнее].

  • — Поколения языков программирования

    Развитие языков программирования Языки и системы программирования Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х годов, когда только появились первые компьютеры. Это… [читать подробнее].

  • Исследование истории становления формальных знаковых систем для записи текстов программ. Анализ принципов описания действий компьютера. Рассмотрение языков: машинного, высокого уровня, алгоритмических, объектно-ориентированных и на платформе .net.

    Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

    Размещено на http://www.allbest.ru/

    ОБЛАСТНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

    «Томский техникум водного транспорта и судоходства»

    Реферат

    Предмет: Информатика

    Тема: История развития языков программирования

    Работу выполнил:

    студент гр. 533з-1,633з-1

    Боднарук Д.И

    Работу проверил:

    Чепчугов М.В.

    Томск 2014 г.

    Содержание

    Введение

    Машинный язык

    Первые языки программирования высокого уровня

    Алгоритмические языки программирования

    Языки объектно-ориентированного программирования (90-ые г. XX в.)

    Языки программирования на платформе .NET

    Заключение

    Список литературы

    Введение

    Язык программирования — формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.

    Всю историю компьютерной индустрии и компьютерных наук с определенной точки зрения можно представить как историю развития языков программирования. Меняются времена, усложняются задачи, то, что раньше требовало человеко-лет, нынче энтузиасты делают на коленке за несколько недель; накоплена огромная масса типовых решений, типовых библиотек и типовых программистов. А создание, развитие и изменение языков программирования идет полным ходом.

    Машинный язык

    Программы на машинном языке — очень длинные последовательности единиц и нулей, являлись машинно-зависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу.

    Ассемблер (начало 50-ых годов XX в.)

    Язык Ассемблера — это символическое представление машинного языка. Он облегчает процесс программирования по сравнению с программированием в машинных кодах.

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

    Некоторые задачи, например, обмен с нестандартными устройствами обработки данных сложных структур невозможно решить с помощью языков программирования высокого уровня. Это под силу ассемблеру.

    В принципе, язык Ассемблер является машинным языком. И программист реализующий какую-либо задачу на языках высокого уровня, с помощью Ассемблера может определить осмыслено ли решение данной задачи, с точки зрения использования ЭВМ.

    Первые языки программирования высокого уровня

    С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-level language). Эти языки были машинно-независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.

    Примеры таких языков: FORTRAN (FORmula TRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) — Common Business-Oriented Language); язык BASIC (Beginner’s All Purpose Instuction Code — универсальный язык символьных инструкций для начинающих) (1964 г.)

    БЕЙСИК

    Бейсик — это продукт Новой Англии.

    Cозданный в 1964г., как язык обучения программированию. Бейсик является общепринятым акронимом от»Beginner’s All-purpose Symbolic Insruction Code» (BASIC) — Многоцелевой Символический Обучающий Код для Начинающих».

    Вскоре как обучаемые, так и авторы программ обнаружили, что Бейсик может делать практически все то, что делает скучный неуклюжий Фортран.

    А так как Бейсику было легко обучиться и легко с ним работать, программы на нем писались обычно быстрее, чем на Фортране. Бейсик был также доступен на персональных компьютерах, обычно он встроен в ПЗУ. Так Бейсик завоевал популярность. Интересно, что спустя 20 лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования, имеющихся в распоряжении любителей программирования. Более того, он прекрасно справляется с работой.

    Несмотря на высказывания снобов — сторонников языков Си и Паскаля, Бейсик считается деловым языком, снабженным мощными средствами решения специфических задач, которые обычно большинство пользователей решают при помощи небольших компьютеров, а именно: работая с файлами и выводя текстовое и графическое изображение на экране дисплея.

    Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, ООП.

    Алгомл- название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ.

    Алгоритмические языки программирования

    С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся:

    · язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970);

    · язык Си, позволяющий быстро и эффективно создавать программный код (1971). язык программа компьютер

    Язык программирования Pascal был создан Никлаусом Виртом, и назван в честь французского философа и математика XVII в. Блеза Паскаля.

    Языки объектно-ориентированного программирования (90-ые г. XX в.)

    В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:

    · язык С++ (1983) — продолжение алгоритм. языка Си.

    · язык Object Pascal (1989) был создан на основе языка Pascal. После создания среды программирования — Delphi (1995).

    · язык Visual Basic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.

    Языки программирования на платформе .NET

    Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

    · на языке Visual Basic .Net ( на основе Visual Basic) — 2003 г.;

    · на языке Visual C# (С-шарп) — на основе языков С++ и J — 2003 г.;

    · на языке Visual J# (J-шарп) — на основе Java и JavaScript — 2003 г..

    Заключение

    Изобретение языка программирования высшего уровня позволило нам общаться с машиной, понимать её (если конечно Вам знаком используемый язык), как понимает американец немного знакомый с русским языком древнюю азбуку Кириллицы. Проще говоря, мы в нашем развитии науки программирования пока что с ЭВМ на ВЫ. Поверьте мне это не сарказм вы только посмотрите как развилась наука программирования с того времени, как появились языки программирования, а ведь язык программирования высшего уровня, судя по всему ещё младенец. Но если мы обратим внимание на темпы роста и развития новейших технологий в области программирования, то можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Так и хочется назвать это детище компьютеризированного будущего: «языки программирования «высочайшего» уровня». Возможно, концепция решения этого вопроса проста, а ближайшее будущее этого проекта уже не за горами, и в этот момент, где нибудь в Запорожье, Амстердаме, Токио или Иерусалиме, перед стареньким 133MHz горбится молодой, никем не признанный специалист и разрабатывает новейшую систему искусственного интеллекта, которая наконец-то позволит человеку, с помощью своих машинных языков, вести диалог с машиной на ТЫ.

    Размышляя над этим, хочется верить в прогресс науки и техники, в высоко — компьютеризированное будущее человечества, как единственного существа на планете, пусть и не использующего один, определенный разговорный язык, но способного так быстро прогрессировать и развивать свой интеллект, что и перехода от многоязыковой системы к всеобщему пониманию долго ждать не придется.

    Единственный способ изучать новый язык программирования — писать на нём программы.

    Список литературы

    Интернет ресурс :

    1.

    http://festival.1september.ru

    2. http://evolutsia.com

    Размещено на Allbest.ru

  • Объектно-ориентированное программирование. Сравнительный анализ языков объектно-ориентированного программирования

    Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.

    курсовая работа [2,6 M], добавлен 17.11.2014

  • Структура и способы описания языков программирования

    Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.

    курсовая работа [292,0 K], добавлен 18.03.2013

  • Циклические конструкции в языках программирования высокого уровня

    Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Основные операторы языка программирования высокого уровня: операторы присваивания, ввода-вывода, безусловного и условного перехода, выбора, цикла

    Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Системы программирования

    Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.

    презентация [11,9 K], добавлен 23.10.2013

  • Компьютерное моделирование технологических процессов

    Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.

    учебное пособие [1,7 M], добавлен 26.10.2010

  • Инструментальные средства моделирования систем

    Основы систематизации языков имитационного моделирования, моделирование систем и языки программирования. Особенности использования алгоритмических языков, подходы к их разработке.

    Анализ характеристик и эффективности языков имитационного моделирования.

    курсовая работа [1,4 M], добавлен 15.03.2012

  • Теория и практика языков программирования

    Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.

    курсовая работа [759,5 K], добавлен 04.11.2014

  • Система управления базами данных

    Рассмотрение совокупности программ и языковых средств (специальных языков описания и манипулирования данными), предназначенных для создания, ведения и использования баз данных. Определение языков общения. Исследование принципов построения банка данных.

    реферат [56,9 K], добавлен 07.08.2017

  • Понятие объектно-ориентированного программирования

    Использование объектно-ориентированного программирования — хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.

    контрольная работа [60,1 K], добавлен 17.01.2011

  • 10 PRINT "HELLO WORLD"
    20 END

    program Hello(input, output)
    begin
    writeln(‘Hello World’)
    end.

    (defun hello
    (print
    (cons ‘Hello (list ‘World))))

    #include <stdio.h>
    void main(void)
    {
    char *message[] = {"Hello ", "World"};
    int i;

    for(i = 0; i < 2; ++i)
    printf("%s", message[i]);
    printf("\n");
    }

    #include <iostream.h>
    #include <string.h>

    class string
    {
    private:
    int size;
    char *ptr;

    public:
    string() : size(0), ptr(new char(‘\0’)) {}

    string(const string &s) : size(s.size)
    {
    ptr = new char[size + 1];
    strcpy(ptr, s.ptr);
    }

    ~string()
    {
    delete [] ptr;
    }

    friend ostream &operator <<(ostream &, const string &);
    string &operator=(const char *);
    };

    ostream &operator<<(ostream &stream, const string &s)
    {
    return(stream << s.ptr);
    }

    string &string::operator=(const char *chrs)
    {
    if (this != &chrs)
    {
    delete [] ptr;
    size = strlen(chrs);
    ptr = new char[size + 1];
    strcpy(ptr, chrs);
    }
    return(*this);
    }

    int main()
    {
    string str;

    str = "Hello World";
    cout << str << endl;

    return(0);
    }

    [
    uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
    ]
    library LHello
    {
    // bring in the master library
    importlib("actimp.tlb");
    importlib("actexp.tlb");

    // bring in my interfaces
    #include "pshlo.idl"

    [
    uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
    ]
    cotype THello
    {
    interface IHello;
    interface IPersistFile;
    };
    };

    [
    exe,
    uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
    ]
    module CHelloLib
    {

    // some code related header files
    importheader(<windows.h>);
    importheader(<ole2.h>);
    importheader(<except.hxx>);
    importheader("pshlo.h");
    importheader("shlo.hxx");
    importheader("mycls.hxx");

    // needed typelibs
    importlib("actimp.tlb");
    importlib("actexp.tlb");
    importlib("thlo.tlb");

    [
    uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
    aggregatable
    ]
    coclass CHello
    {
    cotype THello;
    };
    };

    #include "ipfix.hxx"

    extern HANDLE hEvent;

    class CHello : public CHelloBase
    {
    public:
    IPFIX(CLSID_CHello);

    CHello(IUnknown *pUnk);
    ~CHello();

    HRESULT __stdcall PrintSz(LPWSTR pwszString);

    private:
    static int cObjRef;
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "thlo.h"
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "mycls.hxx"

    int CHello::cObjRef = 0;

    CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
    {
    cObjRef++;
    return;
    }

    HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
    {
    printf("%ws\n", pwszString);
    return(ResultFromScode(S_OK));
    }

    CHello::~CHello(void)
    {

    // when the object count goes to zero, stop the server
    cObjRef—;
    if( cObjRef == 0 )
    PulseEvent(hEvent);

    return;
    }

    #include <windows.h>
    #include <ole2.h>
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "mycls.hxx"

    HANDLE hEvent;

    int _cdecl main(
    int argc,
    char * argv[]
    ) {
    ULONG ulRef;
    DWORD dwRegistration;
    CHelloCF *pCF = new CHelloCF();

    hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    // Initialize the OLE libraries
    CoInitializeEx(NULL, COINIT_MULTITHREADED);

    CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
    REGCLS_MULTIPLEUSE, &dwRegistration);

    // wait on an event to stop
    WaitForSingleObject(hEvent, INFINITE);

    // revoke and release the class object
    CoRevokeClassObject(dwRegistration);
    ulRef = pCF->Release();

    // Tell OLE we are going away.
    CoUninitialize();

    return(0); }

    extern CLSID CLSID_CHello;
    extern UUID LIBID_CHelloLib;

    CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
    0x2573F891,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
    0x2573F890,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "clsid.h"

    int _cdecl main(
    int argc,
    char * argv[]
    ) {
    HRESULT hRslt;
    IHello *pHello;
    ULONG ulCnt;
    IMoniker * pmk;
    WCHAR wcsT[_MAX_PATH];
    WCHAR wcsPath[2 * _MAX_PATH];

    // get object path
    wcsPath[0] = ‘\0’;
    wcsT[0] = ‘\0’;
    if( argc > 1) {
    mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
    wcsupr(wcsPath);
    }
    else {
    fprintf(stderr, "Object path must be specified\n");
    return(1);
    }

    // get print string
    if(argc > 2)
    mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
    else
    wcscpy(wcsT, L"Hello World");

    printf("Linking to object %ws\n", wcsPath);
    printf("Text String %ws\n", wcsT);

    // Initialize the OLE libraries
    hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

    if(SUCCEEDED(hRslt)) {

    hRslt = CreateFileMoniker(wcsPath, &pmk);
    if(SUCCEEDED(hRslt))
    hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

    if(SUCCEEDED(hRslt)) {

    // print a string out
    pHello->PrintSz(wcsT);

    Sleep(2000);
    ulCnt = pHello->Release();
    }
    else
    printf("Failure to connect, status: %lx", hRslt);

    // Tell OLE we are going away.
    CoUninitialize();
    }

    return(0);
    }

    #!/usr/local/bin/perl
    $msg="Hello, world.\n";
    if ($#ARGV >= 0) {
    while(defined($arg=shift(@ARGV))) {
    $outfilename = $arg;
    open(FILE, ">" .

    $outfilename) || die "Can’t write $arg: $!\n";
    print (FILE $msg);
    close(FILE) || die "Can’t close $arg: $!\n";
    }
    } else {
    print ($msg);
    }
    1;

    #include <stdio.h>
    #define S "Hello, World\n"
    main(){exit(printf(S) == strlen(S) ? 0 : 1);}

    % cc -o a.out ~/src/misc/hw/hw.c
    % a.out

    % cat
    Hello, world.
    ^D

    10 PRINT "HELLO WORLD"
    20 END

    mail -s "Hello, world." bob@b12
    Bob, could you please write me a program that prints "Hello,
    world."?
    I need it by tomorrow.
    ^D

    % zmail jim
    I need a "Hello, world." program by this afternoon.

    % letter
    letter: Command not found.
    % mail
    To: ^X ^F ^C
    % help mail
    help: Command not found.
    % damn!
    !: Event unrecognized
    % logout

     

    Добавить комментарий

    Закрыть меню