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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Специальные, экзотические и эзотерические языки программирования

Языки программирования бывают специальные и универсальные. Пример универсального языка — C++. Пример специального языка — PHP. Он используется для разработки серверной части веб-приложений. Другой пример специального языка программирования — 1C. Он используется для написания кода в системах бухгалтерии, управления предприятием и т.п. компании "1С" и является одним из самых популярных языков в России.

ЭЗОТЕРИЧЕСКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Эзотерические языки придумываются для развлечения, часто они пародируют "настоящие" или являются абсурдным воплощением "серьёзных" концепций программирования. Некоторые эзотерические языки нарочно ограничены, (как, например, язык HQ9+), другие — универсальны и обладают тьюринговой полнотой. Общее свойство, присущее любому эзотерическому языку, — текст программы на нём понятен лишь "посвящённому", либо непонятен вообще, потому что для составления программы нужно написать программу на обычном языке. В то время, как разработчики "реальных" языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков обычно ставят перед собой иные задачи.

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

Ярким примером эзотерического языка является язык BrainFuck.

Команда BrainFuck Эквивалент на Си Описание команды
> ++p; Перейти к следующей ячейке
< --p; Перейти к предыдущей ячейке
+ ++(*p); Увеличить значение в текущей ячейке на 1
- --(*p); Уменьшить значение в текущей ячейке на 1
. putchar(*p); Напечатать значение из текущей ячейки
, *p = getchar(); Ввести извне значение и сохранить в текущей ячейке
[ while (*p) { Если значение текущей ячейки нуль, перейти вперед по тексту программы на ячейку, следующую за соответствующей ] (с учетом вложенности)
] } Если значение текущей ячейки не нуль, перейти назад по тексту программы на символ [ (с учетом вложенности)

Каждый начинающий программировать на BrainFuck немедленно сталкивается со следующими проблемами:

· отсутствие операции копирования значения

· отсутствие промежуточной (аккумуляторной) памяти

· отсутствие условных операторов в их привычном виде

· отсутствие привычной арифметики, операций умножения и деления

Программа "Hello, world!" на языке BrainFuck:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>.

О языке Python

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

Python — современный универсальный интерпретируемый язык программирования. Его достоинства:

1. Кроссплатформенность и бесплатность.

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

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

4. Богатая стандартная библиотека, возможность разработки промышленных приложений (для работы с сетью, GUI, базами данных и т.д.)

Большинство школьных олимпиад по информатике поддерживают язык Python. C 2015 года в текстах задач ЕГЭ примеры приводятся также и на языке Python.

Практика показывает, что задания ЕГЭ по информатике, в которых требуется написать программу, существенно проще решать с использованием языка Python, чем классических языков Бейсик, Паскаль, C/C++.

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

· Марк Лутц. Изучаем Python. 4-е издание – очень толстый и подробный учебник.

· Марк Саммерфилд. Программирование на Python 3 – менее толстый, не столь подробный учебник.

Интерпретация и компиляция

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

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

Компилятор (англ. compiler - составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. Результат работы компилятора — бинарный исполняемый файл.

Интерпретатор (англ. interpreter - истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.

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

Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.

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

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

АЛГОРИТМ РАБОТЫ ПРОСТОГО ИНТЕРПРЕТАТОРА:

1. прочитать инструкцию;

2. проанализировать инструкцию и определить соответствующие действия;

3. выполнить соответствующие действия;

4. если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2

Где применяется Python

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

Многие компании активно используют Python для написания своих продуктов или некоторых их частей. Среди крупнейших можно выделить:

· Google

· Яндекс

· Mail.Ru

· Apple(использует Python и Twisted для разработки сервера календарей iCal)

· IBM

· CERN

· DreamWorks

· NASA

· Nokia

Кроме того, Python активно используется в различных проектах:

· CherryPy — среда для разработки веб-приложений

· Django — среда для разработки веб-приложений

· Google App Engine — Google-хостинг

· Matplotlib — визуализация научных данных в стиле MATLAB

· BitTorrent — первый клиент-сервер для популярного протокола файлообменных сетей.

· Dropbox — приложение для прозрачной синхронизации данных на множестве компьютеров.

Следующие проекты используют Python для написания скриптов:

· Википедия использует Python для написания ботов

· OpenOffice.org — набор офисных программ, альтернатива Microsoft Office

· Vim — текстовый редактор

Python также активно используется разработчиками компьютерных игр (Eve Online, Civilization IV и др.)

Пишем на Python в одну строчку

Благодаря функциональным возможностям языка Python, на нем многое можно написать в одну строчку.

· считываем числа, вводимые через пробел, и сортируем их по возрастанию:

print(sorted(map(int, input().split())))

· заполняем таблицу N * M числами от 1 до M * N змейкой:

[ [ m * i + j * (i % 2 == 0) + (m - 1 - j) * (i % 2 == 1) for j in range(m)] for i in range(n)]

· кодируем текст шифром Цезаря:

print("".join([chr(ord(c) + 1) for c in input()]))

(попробуйте написать код, который раскодирует сообщение, закодированное таким способом! Для этого даже не нужно знать Python — достаточно лишь слегка изменить приведенный программный код.)

Ввод-вывод в Python

Ввод данных

Для считывания строки со стандартного ввода используется функция input(), которая считывает строку с клавиатуры и возвращает значение считанной строки, которое сразу же можно присвоить переменным:

a = input()
b = input()

Правда, функция input возвращает текстовую строку. Если нужно сделать так, чтобы переменные имели целочисленные значения, то сразу же после считывания выполним преобразование типов при помощи фунцкии int, и запишем новые значения в переменные a и b:

a = int(a)
b = int(b)

Можно объединить считывание строк и преобразование типов, если вызывать функцию int для того значения, которое вернет функция input():

a = int(input())
b = int(input())

Сложнее считать значения переменных, если они записаны в отдельной строке. Здесь нужно применить к считанной строке метод split(), который разделяет строку на части по одному или двум пробелам. Затем результат выполнения этой функции присвоим кортежу из двух или нескольких чисел. Например, если в строке вводятся два числа через пробел, то считать их можно так:

a, b = input().split()
a = int(a)
b = int(b)

Аналогично, три переменные можно считать, записав слева от оператора присваивания кортеж из трех переменных:

a, b, c = input().split()

Можно также сразу же преобразовать считанные значения в числовой тип (например, int), если воспользоваться функцией map, которая применяет к каждому элементу списка заданную функцию (для преобразования к типу int нужно, соответственно, задать функцию int для применения к каждому элементу). Для начала можно просто запомнить эту конструкцию:

a, b, c = map(int, input().split())

Вывод данных

Для вывода данных используется функция print может выводить не только значения переменных, но и значения любых выражений. Например, допустима запись print(2 + 2 ** 2). Также при помощи функции print можно выводить значение не одного, а нескольких выражений, для этого нужно перечислить их через запятую:

a = 1 b = 2 print(a, '+', b, '=', a + b)

В данном случае будет напечатан текст 1 + 2 = 3: сначала выводится значение переменной a, затем строка из знака “+”, затем значение переменной b, затем строка из знака “=”, наконец, значение суммы a + b.

Обратите внимание, выводимые значение разделяются одним пробелом. Но такое поведение можно изменить: можно разделять выводимые значения двумя пробелами, любым другим символом, любой другой строкой, выводить их в отдельных строках или не разделять никак. Для этого нужно функции print передать специальный именованный параметр, называемый sep, равный строке, используемый в качестве разделителя (sep — аббревиатура от слова separator, т.е. разделитель). По умолчанию параметр sep равен строке из одного пробела и между значениями выводится пробел. Чтобы использовать в качестве разделителя, например, символ двоеточия нужно передать параметр sep, равный строке ‘:’:

print(a, b, c, sep = ':')

Аналогично, для того, чтобы совсем убрать разделитель при выводе нужно передать параметр sep, равный пустой строке:

print(a, '+', b, '=', a + b, sep = '')

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

print(a, b, sep = '\n')

Символ обратного слэша в текстовых строках является указанием на обозначение специального символа, в зависимости от того, какой символ записан после него. Наиболее часто употребляется символ новой строки ‘\n’. А для того, чтобы вставить в строку сам символ обратного слэша, нужно повторить его два раза: ‘\\’.

Вторым полезным именованным параметром функции print является параметр end, который указывает на то, что выводится после вывода всех значений, перечисленных в функции print. По умолчанию параметр end равен ‘\n’, то есть следующий вывод будет происходить с новой строки. Этот параметр также можно исправить, например, для того, чтобы убрать все дополнительные выводимые символы можно вызывать функцию print так:

print(a, b, c, sep = '', end = '')



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 560; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.67.16 (0.036 с.)