Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования. Критерии выбора среды и языка разработки программ .

Содержание:

Введение

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

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

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

Объектом исследования послужили языки программирования и критерии их выбора в разных средах

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

На сегодняшний день определен ряд требований к языкам программирования и классифицировать языки по их особенностям.

Основные требования, предъявляемые к языкам программирования:

Наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;

Единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;

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

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

Однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач

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

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

Транзакционная память

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

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

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

Перефразируя, все вышесказанное, у нас есть чистые функции, они определяют бизнес-логику нашего приложения. Есть грязные функции, служащие для взаимодействия во внешних системах (сокеты, БД, web-сервер). И существует внутреннее состояние нашей системы, которое в Clojure хранится в виде опосредованных ссылок (references). Есть 4 вида стандартных ссылок:

var — аналог thread-local переменных, служат для задания контекстных данных: текущее соединение с БД, текущий HTTP-запрос, параметры точности для математических выражений и подобное;

atom — атомарная ячейка, позволяет обновлять состояние синхронно, но не координированно;

agent — легковесный аналог для actor (хотя, в некотором смысле они являются антиподами, об этом ниже), служат для асинхронной работы с состоянием;

ref — ячейки транзакционной памяти, предоставляет синхронную и координированную работу с состоянием.

1. Виды языков программирования

1.1 Процедурные языки

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

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

  • Весь код программы — это набор команд, выполняемых ЭВМ последовательно.
  • Итоги, или данные подсчетов, могут храниться в памяти, и при необходимости, моментально извлекаться и применяться.

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

За истекший временной период, развития программирования, стало понятно, что процедурно ориентированные языки программирования фактически появились первыми, они стали флагманом развития всей вычислительной техники.

1.2 Машинные коды и ассемблер

Сейчас рассмотрим язык Ассемблер и сходные с ним языки, они придуманы и используются для прямой обработки машинных инструкций и работы с компьютером на близком к аппаратному уровню. Этот подход мы относим к процедурному. Машинный код — это своеобразная система последовательных команд, написанных под конкретно взятую ЭВМ, команды выполняются процессором устройства либо его микропрограммами – уже написанными последовательностями действий процессора. Во главе угла этих инструкций: работа двоичного кода, последовательность нуля и единиц. Нуль это отсутствие электрического сигнала, а единица – получение ЭВМ единичного импульса. Вот здесь четко видно подчинение процедурному программированию – каждая последующая команда в программе выполняется только по реализации предыдущий. Как только в одной из команд происходит ошибка, то программа прекращает работу, необходимо искать ошибку в коде.

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

1.3 Язык Java

Java — один из самых первых, узнаваемых, объектно-ориентированный язык программирования, разработанный Sun Microsystems и выпущенный 23 мая 1995 года. Поначалу он назывался Oak (James Gosling) и разрабатывался для ограниченного использования только в бытовой электронике, но потом, в нем раскрыли новые возможности, он был переименован в Java и стал использоваться для написания апплетов, всех типов сетевых приложений и вообще, всемирным стандартом для разработки и распространения встроенных и мобильных приложений, игр, веб-контента и корпоративного программного обеспечения.

Программы на Java могут быть транслированы в байт-код, выполняемый на виртуальной java-машине (JVM) — программе, обрабатывающей байт-код и передающей инструкции оборудованию, как интерпретатор, но с тем отличием, что байт-код, в отличие от текста, обрабатывается значительно быстрее.

В основе зарождения JAVA, создание самого передового на тот момент, передового программного обеспечения для бытовой электроники. Вначале проект возникал на языке C++, но дальнейшее развитие языка, требовало нового подхода. Стал необходим собственный новая платформа-независимый язык программирования, который позволил бы использовать его на разных процессорах, под разными операционными системами.

Язык Java стал незаменимым для создания решений и для сети Internet. Мы знаем, что огромное множество, архитектурных решений, принятых при создании Java, стало необходимостью предоставить синтаксис, сходный с C и C++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.

Java состоит из трех важнейших элементов:

Прежде всего это использование апплетов (applets) — собственные сетевые приложения, встраиваемые в страницы Web. Потребители имеют возможность настраивать и изменять апплеты так же легко, как и как любые документы HTML

Второе: Java высвобождает все возможности объектно-ориентированной разработки приложений, сочетая обычный синтаксис с удобной в работе средой разработки. Это позволило программисту без проблем и в короткий срок создавать как новые программы, так и апплеты

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

Основа языка Java в том, что его код сначала транслируется в специальный байт-код, независимый от платформы. А затем этот байт-код выполняется виртуальной машиной JVM (Java Virtual Machine). Именно в этом, отличие Java от стандартных интерпретируемых языков, таких как PHP или Perl, код которых сразу же выполняется интерпретатором. Однако, Java не является и чисто компилируемым языком, как С или С++.

Такое построение подразумевает кроссплатформенность и аппаратную переносимость программ на Java, благодаря чему подобные программы могут легко применяться на - Windows, Linux, Mac OS и т.д. Для каждой из платформ может быть своя реализация виртуальной машины JVM, но каждая из них может выполнять один и тот же код.

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

Также важнейшая часть применения Java: автоматическая сборка мусора. Программисту более не понадобится вручную освобождать память от ранее использовавшихся объектов, как в С++, вводимый JAVA сборщик мусора, сделает все за Вас. Это очень удобно!

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

Невозможно не упомянуть про расширение JavaFX работающее на основеJava. На этой платформе, современные программисты могут создавать и развертывать полнофункциональные интернет-приложения (RIA), успешно работающие на различных платформах. JavaFX во многом расширяет возможности Java, позволяет разработчикам использовать любые библиотеки Java в приложениях JavaFX. Тем самым, программисты, расширяют возможности Java, используют технологию презентаций, поддерживающей JavaFX для создания увлекательных визуальных образов, графических приложений.

1.4 Fortran

Перенесемся в США в 1950 годы. Возникший тогда язык Fortran это также процедурный язык программирования. При его разработке, было понятно, что его возможности уже намного выше, нежели первые машинные коды и ассемблеры. Это один из первых высокоуровневых языков программирования, он имеет свой транслятор, позволяет решать серьезные математические и логические задачи. Он нес высокие познавательные цели, позволил автоматизировать подсчеты линейных, дифференциальных и интегральных уравнений, выполнять аппроксимации функций, преобразования Фурье. Он используется и в наши дни, например, при работе с библиотеками.

За прошедшее время, происходившие модификации языка, превратили данный язык в сильнейший и мощный инструмент, позволяющий специалисту работать и с объектно-ориентированным программированием, и с обобщенным и модульным программированием. Но говоря про Фортран, нельзя не вспомнить, что в 1950-х появились и другие процедурные языки, во многом похожие, но отличающиеся, по возможностям решения задач. Это Алгол, Ada, и знаменитый, всемирно известный Basic.

1.5 Язык программирования С

Перенесемся в 70-е года 20 столетия, созданный в ту эпоху, язык программирования С, также являлся процедурным. Это важнейший язык программирования! Выполняемые в нем работы так похожи на классический ассемблер, что позволяет этому языку легко обращаться непосредственно к сердцу компьютера, операционному составляющему. Именно на этом языке создаются операционные системы, драйвера, возникает разнообразное, прикладное программное обеспечение, он позволяет разработать практически любое ПО, писать различные программы, создавать приложения, он интегрирован практически под все аппаратные платформы.

1.6 Паскаль

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

1.7 Язык программирования C++

C++ это, прежде всего, дальнейшее развитие языка программирования С, это язык программирования общего назначения, в нем сочетаются свойства как высокоуровневых, так и низкоуровневых языков программирования. В отличие от его предшественника, здесь, наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Знаки ++ в данном названии обозначает инкремент переменной. Так же он поддерживает такие парадигмы программирования как: процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов(классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков.

Язык программирования C++ важнейший в современном мире, он широко используется для разработки различного программного обеспечения. А именно, позволяет создавать разнообразные прикладные программы, разрабатывать и внедрять различные операционные системы, драйверы устройств, а также незаменим для индустрии развлечений, создание широчайшего мира видеоигр, это его стезя. Язык существует и доступен в нескольких проектах, как доступных, так и коммерческих. Основные игроки на рынке: GNU, Microsoft и Embarcadero (Borland). Знаменитый Проект GNU — проект разработки свободного программного обеспечения (СПО).

2. Некоторые особенности процедурного программирования

Что же такое процедурное программирование, основные критерии:

Прежде всего это Модуль. Это часть программы, которая может храниться в отдельном файле. Он выполняет часть функций, связанных с какими-то определенными переменными, объектами или константами;

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

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

2.1 Объектно-ориентированные

Язык Python

Python – это современный, универсальный язык высокого уровня, к преимуществам которого относят высочайшую производительность программных решений и структурированный, хорошо читаемый код. Синтаксис Питона максимально облегчен, что позволяет выучить его за сравнительно короткое время. Ядро имеет очень удобную структуру, а широкий перечень встроенных библиотек позволяет применять внушительный набор полезных функций и возможностей. Он может использоваться для написания прикладных приложений, а также разработки WEB-сервисов, что во многом оценят дизайнеры.

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

Один из самых популярных интерпретаторов языка – CPython, написанный на C. Распространяется эта среда разработки бесплатно по свободной лицензии. Интерпретатор поддерживает большинство популярных платформ.

Надо сказать, что Питон активно развивается. Примерно раз в 2 года выходят обновления. Важной особенностью языка является отсутствие таких стандартов кодировки как ANSI, ISO и некоторых других, они работают благодаря интерпретатору. Это интерпретируемый язык — он не компилируется, то есть до запуска представляет из себя обычный текстовый файл. Программировать можно практически на всех платформах, язык хорошо спроектирован и логичен. Преимущество разработки на нем в разы быстрее, чем на JAVA и С, ведь надо писать меньше кода, поэтому, так удобен для новичков.

Вернемся к истории, Питон начали разрабатывать во второй половине 80-х г.г. прошлого века. Автором Питона стал программист из Нидерландов по имени Гвидо ван Россум. Изначально язык должен был стать объектно-ориентированным. Поначалу, это был язык сценариев, «документированный» т.е. скриптовый язык. В феврале 1991 года ван Россум опубликовал исходный код языка в одной из новостных групп. Питон имеет четко структурированное семантическое ядро и достаточно простой синтаксис. Все, что пишется на этом языке, всегда легко читаемо. В случае необходимости передать аргументы язык использует функцию call-by-sharing.

На сегодняшний день, Python очень популярен в веб-разработке. Для работы с ним используются фреймворки: Pyramid, Pylons, TurboGears, Flask, CherryPy и — самый популярный — Django.

Существуют и движки для создания сайтов на Python:

Abilian SBE;

Ella;

Saleor;

Wagtail;

Django-CMS.

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

GIMP — визуальный редактор в ОС Linux;

Ubuntu Software Center — центр приложений в ОС Ubuntu (один из дистрибутивов Linux);

BitTorrent до 6 версии (позже программу переписали на C++, но сети peer-to-peer все еще работают на Python) — менеджер торрент-закачек;

Blender — программа для создания 3D-графики.

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

SciPy — библиотека с научными инструментами;

NumPy — расширение, которое добавляет поддержку матриц и многомерных массивов, а также математические функции для работы с ними;

Matplotlib — библиотека для работы с 2D- и 3D-графикой.

Набор операторов в языке вполне стандартен. Удобная особенность синтаксиса – это форматирование текста кода при помощи разбивки их на блоки с помощью отступов, которые создают нажатием клавиш «Space» и «Tab». В синтаксисе отсутствуют фигурные или операторные скобки, обозначающие начало и конец блока. Такое решение заметно сокращает количество строк тела программы и приучает программиста соблюдать хороший стиль и аккуратность при написании кода.

Создание скриптов

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

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

2.2 Декларативные языки программирования

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

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

HTML

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

HTML, не является языком программирования, в чистом виде, то есть он не имеет возможности создавать динамические функции. Вместо этого он позволяет организовывать и форматировать документы, аналогично Microsoft Word.

При работе с HTML мы используем простые структуры кода (теги и атрибуты), чтобы разметить страницу веб-сайта. Например, мы можем создать абзац, поместив прилагаемый текст в исходный тег <p> и закрывающий </p>.

HTML был изобретён Тимом Бернерсом-ли, физиком из исследовательского института ЦЕРН в Швейцарии. Он придумал идею интернет-гипертекстовой системы.

Hypertext означает текст, содержащий ссылки на другие тексты, которые зрители могут получить немедленно. Он опубликовал первую версию HTML в 1991 году, состоящую из 18 тегов HTML. С тех пор каждая новая версия языка HTML появилась с разметкой новых тегов и атрибутов (модификаторов тегов).

Согласно Справочнику, HTML Element Reference от Mozilla Developer Network, в настоящее время существует 140 тегов HTML, хотя некоторые из них уже устарели (не поддерживаются современными браузерами).

Из-за быстрого роста популярности HTML теперь считается официальным веб-стандартом. Спецификации HTML поддерживаются и разрабатываются консорциумом World Wide Web (W3C).

Самым большим обновлением языка стало внедрение HTML5 в 2014 году. Было добавлено несколько новых семантических тегов к разметке, которые показывают смысл их собственного контента, например, <article>, <header> и <footer>.

Обычно средний веб-сайт страниц, например: домашние страницы, обычные страницы, страницы контактов будут иметь отдельные HTML-документы.

Каждая HTML-страница состоит из набора тегов (также называемых элементами), которые вы можете назвать строительными блоками веб-страниц. Они создают иерархию, которая структурирует контент по разделам, параграфам, заголовкам и другим блокам контента.

Эволюция HTML. Что отличает HTML и HTML5?

Начиная с первых дней, HTML прошёл невероятную эволюцию. W3C постоянно публикует новые версии и обновления, в то время как исторические вехи также получают выделенные имена.

HTML4 (в наши дни обычно называемый «HTML») был опубликован в 1999 году, а последняя крупная версия вышла в 2014 году. HTML5 — это обновление, которое ввело множество новых функций для языка.

Одной из наиболее ожидаемых особенностей HTML5 является поддержка встраивания аудио и видео. Вместо использования Flash-плеера мы можем просто вставлять видео и аудиофайлы на наши веб-страницы с помощью новых тегов <audio> </audio> и <video> </video>. Он также включает встроенную поддержку масштабируемой векторной графики (SVG) и MathML для математических и научных формул.

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

Плюсы:

  • Широко используемый язык с большим количеством ресурсов и огромным сообществом.
  • Выполняется изначально в каждом веб-браузере.
  • Поставляется с плоской кривой обучения.
  • В открытом доступе и совершенно бесплатный.
  • Чистая и последовательная разметка.
  • Официальные веб-стандарты поддерживаются консорциумом World Wide Web (W3C).
  • Легко интегрируется с базовыми языками, такими как PHP и Node.js.

Минусы:

  • В основном используется для статических веб-страниц. Для динамической функциональности вам может потребоваться использовать JavaScript или бэкэнд-язык, такой как PHP.
  • Это не позволяет пользователю реализовать логику. В результате все веб-страницы нужно создавать отдельно, даже если они используют одни и те же элементы, например, заголовки и колонтитулы.
  • Некоторые браузеры принимают новые функции медленно.
  • Иногда поведение браузера трудно предсказать (например, старые браузеры не всегда создают новые теги).

Как связаны HTML, CSS и JavaScript?

Хотя HTML является мощным языком, недостаточно создать профессиональный и полностью отзывчивый веб-сайт. Мы можем использовать его только для добавления текстовых элементов и создания структуры содержимого.

Однако HTML отлично работает с двумя другими интерфейсами: CSS  и JavaScript. Вместе они могут обеспечить богатый пользовательский интерфейс и реализовать расширенные функции.

  • CSS отвечает за стили, такие как фон, цвета, макеты, интервал и анимация.
  • JavaScript позволяет добавлять динамические функции, такие как ползунки, всплывающие окна и фотогалереи.

2.3 Функциональные языки программирования

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

Язык Lisp

(LISP, от англ. List Processing — «обработка списков») — семейство языков программирования, основанных на представлении программы системой линейных списков символов, которые притом являются основной структурой данных языка. Лисп считается вторым после Fortran старейшим высокоуровневым языком программирования.

1960 Джон Маккарти опубликовал выдающуюся статью, в которой он сделал для программирования примерно то же, что Евклид когда-то сделал для геометрии. Он показал, как имея в наличии только простые операторы и представление для функций, можно создать целый язык программирования.

Lisp - это целое множество языков программирования, код программ в которых, также, как и данные, представляются системами линейных списков символов. Lisp считается вторым в истории высокоуровневым языком программирования после Фортрана и применяется до сих пор. Как и Фортран, Lisp претерпевал большие изменения в течение своей жизни и имел несколько диалектов. На сегодняшний день наиболее широкую известность приобрели диалекты «Common Lisp» и «Scheme».

Система типов в Lisp'е имеет динамическую структуру. Будучи функциональным языком, Lisp в своих последних версиях обладает признаками императивности, а также, имея возможности символьной обработки, делает возможным реализовать объектно-ориентированность.

Лисп является наиболее важным языком программирования, используемым в исследованиях по искусственному интеллекту и в математической лингвистике. Название языка "Лисп" происходит из "list processing" (обработка списков). Буквально английское слово "lisp" означает "лепетать", "шепелявить" и "сюсюкать". В качестве имени языка программирования искусственного интеллекта это метко, поскольку именно с помощью Лиспа вычислительные машины научились в некоторой мере лепетать на человеческом языке.   И всё же Лисп ни в каком смысле не является младенцем. Скорее он старик среди языков программирования. Лисп разработан уже в 50-х годах и является вслед за Фортраном старейшим ещё используемым языком программирования. Но в отличие от Фортрана будущее Лиспа ещё впереди.   Лисп представляет собой язык так называемого функционального программирования. Он основан на алгебре списочных структур, лямбда-исчислении и теории рекурсивных функций. Благодаря неразвитости традиционной вычислительной техники, отличающемуся от других языков программирования характеру и из-за наличия элементарных средств обработки списков Лисп долгое время являлся основным инструментом исследователей искусственного интеллекта и средством теоретического подхода к анализу программирования. Однако в 80-х годах Лисп, наконец, вышел из лабораторий и нашел применение в прикладных проблемах.   Обычно языки программирования не изобретают, а проектируют. Однако по отношению к Лиспу можно говорить об изобретении. Первоначальная версия языка, в частности, содержала множество понятий и принципов, которые сначала казались очень странными, но многие, из которых позже оказались существенным нововведением. Кроме этого, возможность добавления в Лисп в течение десятилетий многих новых черт подтвердила свойство расширяемости этого языка. Вокруг Лиспа возникла широкая культура, охватывающая многочисленные школы и разнообразные диалекты языка, различные системы и методы программирования, программные среды и Лисп-машины.   Далее мы коротко рассмотрим многочисленные свойства Лиспа и его отличия от других языков программирования.

Программирование и тестирование программы осуществляется функция за функцией, которые пошагово определяются и подвергаются тестированию. Такой подход называют пошаговым программированием. Написание, тестирование и исправление программы осуществляется внутри Лисп-системы без промежуточного использования операционной системы. Специальные операционные системы более не используются, точнее они скрыты от пользователя. Все услуги имеются в интегрированной системе программирования.   Вспомогательные средства, находящиеся в распоряжении пользователя, такие как, например, редактор, инспектор, транслятор, структурная печать и другие образуют общую интегрированную среду, язык которой нельзя чётко отличить от системных средств. Отдельные средства по своему принципу являются прозрачными, чтобы их могли использовать другие средства. Например, интерпретатор может вызвать редактор. Редактор - интерпретатор и так далее даже рекурсивно. Работа может производится часто на различных уровнях или в различных рабочих окнах. Такой способ работы особенно хорошо подходит для исследовательского программирования и быстрого построения прототипов. Лисп является одновременно как языком прикладного, так и системного программирования. Он напоминает машинный язык тем, что как данные, так и программа представлены в одинаковой форме. Язык превосходно подходит для написания интерпретаторов и трансляторов как для него самого, так и для других языков. Например, ядро интерпретатора Лиспа, написанное на самом Лиспе, составляет пару страниц красивого кода. Примерно в том же объёме уместится и ядро интерпретатора Пролога. Как известно, наиболее короткий интерпретатор Пролога, написанный на Лиспе занимает несколько десятков строк.   Традиционно Лисп-системы в основной своей части написаны на Лиспе. При программировании, например, транслятора, есть возможность для оптимизации объектного кода использовать сложные преобразования и методы искусственного интеллекта. Лисп можно в хорошем смысле считать языком машинного и системного программирования высокого уровня. И это особенно характерно для Лисп-машин, которые вплоть до уровня аппаратуры спроектированы для Лиспа и системное программное обеспечение которых написано на Лиспе.

Язык PHP

PHP Hypertext Preprocessor (изначально Personal Home Page Tools) рефлексивный язык программирования, разработанный в качестве инструмента для создания динамических веб-страниц и работы с базами данных — один из лидирующих языков современной веб-разработки. Его отцом считается датский программист Расмус Лердорф, который в 1994 году создал набор скриптов на Perl — ту самую «персональную домашнюю страницу», которая легла в основу PHP.

Главная характеристика PHP — интерпретируемость. В отличие от Java, которая компилируется, а затем запускается в работу, PHP создается во время обращения к нему. Человек открывает сайт, на сервер посылается запрос, и в это время компилируется код. Каждый скрипт компилируется в реальном времени, а затем выполняется. Для чего используют PHP

Единственное применение — это веб-разработка. На PHP невозможно сделать десктопные приложения, он не используется в мобильной разработке — только веб. Но сегодня эта область огромна. Даже некоторые десктопные приложения уходят в веб — тот же Microsoft Office имеет облачный сервис. Ранее считалось, что PHP не подходит для больших высоконагруженных проектов, но опыт Facebook доказывает обратное.

Языки программирования бывают:

1) со статической типизацией;

2) с динамической типизацией.

В первом случае тип переменной определен жестко и заранее. Если это число, программист напишет тип int. Если строка — string. Во втором случае переменная может быть одновременно числом, строкой, массивом, объектом — чем угодно. Одной переменной можно присвоить число, затем массив, объект — и язык программирования это позволит. PHP относится ко второй группе.

И основное преимущество языка php в том, что он именно ориентирован на работу с веб серверами. В нем есть очень много возможностей которые позволяют взаимодействовать с серверными базами данных, такими как mysql и так далее… Работать с e-mail, с почтой, работать с файловой системой на web-сервере. Огромным плюсом PHP, в отличие от, например, JavaScript, является то, что PHP-скрипты выполняются на стороне сервера. PHP не зависит от скорости компьютера пользователя или его браузера, он полностью работает на сервере. Пользователь даже может не знать, получает ли он обычный HTML-файл или результат выполнения скрипта. Сценарии на языке PHP могут исполняться на сервере в виде отдельных файлов, а могут интегрироваться в html страницы. PHP способен генерировать и преобразовывать не только HTML документы, но и изображения разных форматов - JPEG, GIF, PNG, файлы PDF и FLASH. PHP способен формировать данные в любом текстовом формате, включая XHTML и XML. PHP - кроссплатформенная технология. Дистрибутив PHP доступен для большинства операционных систем, включая Linux, многие модификации Unix, Microsoft Windows, Mac OS и многих других. PHP поддерживается на большинстве вебсерверов, таких, как Apache, Microsoft Internet Information Server (IIS), Microsoft Personal Web Server и других. Для большинства серверов PHP поставляется в 2-х вариантах - в качестве модуля и в качестве CGI препроцессора. PHP поддерживает работу с ODBC и большое количество баз данных: MySQL, MSQL, Oracle, PostgreSQL, SQLite и др. Язык программирования PHP, особенно в связке с популярнейшей базой данных MySQL - оптимальный вариант для создания интернет-сайтов различной сложности. Язык PHP постоянно совершенствуется, и ему наверняка обеспечено долгое доминирование в области языков web -программирования. Важным преимуществом языка PHP перед такими языками, как языков Perl и C заключается в возможности создания HTML документов с внедренными командами PHP. Подробнее об этой возможность смотрите здесь.

Значительным отличием PHP от какого-либо кода, выполняющегося на стороне клиента, например, JavaScript, является то, что PHP-скрипты выполняются на стороне сервера. Вы даже можете сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.

PHP позволяет создавать качественные Web-приложения за очень короткие сроки, получая продукты, легко модифицируемые и поддерживаемые в будущем.

PHP прост для освоения, и вместе с тем способен удовлетворить запросы профессиональных программистов.

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

Язык PHP постоянно совершенствуется, и ему наверняка обеспечено долгое доминирование в области языков web -программирования, по крайней мере, в ближайшее время.

Язык Haskell

Функциональный декларативный язык программирования, первая версия которого была стандартизирована в 1990 году, назван в честь математика Хаскелла Карри. Язык Haskell известен благодаря синтаксису, в сравнении с которым Пёрл выглядит псевдокодом, а также необходимостью глубокого понимания лямбда-исчисления, замыканий, теории графов, теории категорий, сопромата, анатомии мозга и прочего матана даже для вывода на экран строки «Hello, World!»

Специфика Haskell К отличительным особенностям Haskell относятся: статическая система типов; во время компиляции выполняется проверка всех выражений на совпадение типов и, в случае нарушения, преобразование заканчивается ошибкой; в очевидных случаях компилятор сам обозначает типы переменных; ленивость; функции соединяются в цепочки по мере востребованности; повторяющиеся фрагменты кода можно именовать и вызывать с помощью сокращений; чистая функциональность; функции в Haskell более строго определены, чем в других языках программирования; они не могут изменять свои аргументы, внутри них не может происходить ничего, что бы влияло на внешние по отношению к ним переменные; параллельные вычисления; потоки, выполняющие алгоритмы одновременно в рамках одного процесса, создаются автоматически на уровне компилятора. Как и у других современных языков программирования, у Haskell есть репозитории, из которых можно загружать библиотеки, расширяющие базовые возможности языка. Кроме того, инструментарий для разработки на Haskell оснащен собственной системой контроля версий Darcs и упаковщиком Cabal. Несмотря на некоторую экзотичность и сравнительно невысокую популярность, Haskell является языком общего применения и даже располагает собственными фреймворками для веб-разработки (Yesod, Happstack, Snap). Недостатки Haskell: ленивость затрудняет выявление причин утечек памяти; имеет место некоторая сложность конфигурирования программ, написанных на Haskell; сравнительно невелико количество пишущих на нем программистов (трудно набрать в проект достаточное количество разработчиков); экспериментальный и исследовательский характер Haskell (он считается флагманом среди функциональных языков программирования) обуславливает появление в нем время от времени непредсказуемых тенденций.

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

Язык Clojure

Используется такими проектами, как NASA CMR, Cisco Threat Grid, CircleCI, Jepsen, стартапами и некоторыми крупными компаниями. В Positive Technologies мы решили попробовать применить Clojure как платформу для базовой автоматизации процессов управления разработкой программного обеспечения, но что-то пошло не так: проект по автоматизации стал большим и опенсорсным.

История создания:

В 2007 году разработчик Рич Хики представил первую публичную версию языка друзьям из сообщества Common Lisp. Дальнейшую популярность язык приобретал через открытые сообщества в интернете, а также с помощью статей выступлений самого Хики.

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

«Имя должно было быть уникальным. Я хотел включить в имя C (C#), L (Lisp) и J (Java). Как только я придумал Clojure, с учетом того, что это каламбур на «closure», что есть доступный домен и огромное пустое google-пространство, то это и было простое решение», – пояснил выбор названия для языка программирования разработчик.

Функциональность Clojure:

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

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

Язык Clojure не полностью чистый, в нем есть поддержка функций с побочным эффектом. Это функции ввода/вывода, побочный эффект в них – их предназначение. Однако такие функции не имеют своего состояния и служат для взаимодействия с внешним миром. Из всех языков на платформе JVM именно Clojure особенно отличается по синтаксису и может сойти за чужеродный механизм в среде Java. Однако общая система типов, бесшовная возможность вызова кода на Java и наоборот, говорит об общей универсальности платформы. В то же время на той же платформе реализованы концепции языка, которых нет в Java: последовательности («ленивые», бесконечные), оптимизация рекурсии, транзакционная память и гомоиконность. Последние две особо выделяют Clojure от всех остальных языков.

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

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

Языки сценариев (скрипты)

Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек. Языки, ориентированные на данные Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами. Особое развитие получили языки для работы с базами данных: 3GL, PL/SQL, FoxPro.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

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

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.

Поколения языков (Generations of Languages)

Поколение 1GL.

Машинные языки, языки низкого уровня - двоичные языки процессоров, представляющие собой набор (алфавит) команд, записанных в двоичном коде (0,1), которые данный процессор может выполнить непосредственно, если эти команды ввести в его память в виде последовательности или сразу подать в арифметическо-логическое устройство процессора. Примеры: язык процессора IBM-PC, язык ARM-процессора.

Поколение 2GL.

Ассемблеры, автокоды, системные языки, языки среднего уровня - текстовые языки, понятные человеку и однозначно переводимые (транслируемые) в языки низкого уровня, то есть машинный двоичный код. Программирование на 2GL на порядок производительнее, чем на 1GL, так как более удобны для человеческого восприятия. Примеры: Макроассемблер, С, PL/1.

Поколение 3GL.

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

Поколение 4GL.

Языки визуального программирования - языки блок-схем, позволяющие отображать алгоритмы в программных проектах, что облегчает создание и анализ алгоритмов. Программирование на 4GL на порядок производительнее, чем на 3GL. Примеры: RAD-системы, CAD-пакеты, OLAP-системы.

Поколение 5GL.

Интеллектуальные языки программирования - позволяют передать функцию создания алгоритмов компьютеру, а за человеком оставить лишь постановку задачи. Программирование на 5GL на порядок производительнее, чем на 4GL. Примеры: система MatCAD, экспертные системы.

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

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

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят ФОРТРАН, ПАСКАЛЬ, АЛГОЛ, БЕЙСИК, С, ко второму – ЛИСП, ПРОЛОГ, СНОБОЛ и др.

Тип задачи

Языки программирования

Задачи искусственного интеллекта

ЛИСП, ПРОЛОГ, Common Lisp, РЕФАЛ, Planner, QLisp

Параллельные вычисления

Fun, Apl, ML, SML, Occam, Actus, параллельный КОБОЛ, ОВС-АЛГОЛ, ОВС-ФОРТРАН

Задачи вычислительной математики и физике

Occam, Actus, параллельный КОБОЛ, ОВС-АЛГОЛ, ОВС-ФОРТРАН

Разработка интерфейса, программ-оболочек систем

Forth, С, C++, АССЕМБЛЕР, МАКРОАССЕМБЛЕР, СИМУЛА-67,0 А К, Smalltalk, Java, РПГ

Задачи вычислительного характера

АЛГОЛ, ФОРТРАН, КОБОЛ, Ada, PL/1, БЕЙСИК, ПАСКАЛЬ

Оформление документов, обработка больших текстовых файлов, организация виртуальных трехмерных интерфейсов в Интернете, разработка БД

HTML, Perl, SQL, Informix 4GL, Natural, DDL, DSDL, SEQUEL

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

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

3. Современные среды разработки и особенности их выбора

Visual Studio

Множество версий этой IDE способны создавать все типы программ, начиная от веб-приложений и заканчивая мобильными приложениями, видеоиграми. Эта линейка программного обеспечения включает в себя множество инструментов для тестирования совместимости. Благодаря своей гибкости Visual Studio является отличным инструментом для студентов и профессионалов.

Поддерживаемые языки: Ajax, ASP.NET, DHTML, JavaScript, JScript, Visual Basic, Visual C#, Visual C++, Visual F#, XAML и другие.

Особенности:

Огромная библиотека расширений, которая постоянно увеличивается;

IntelliSense;

Настраиваемая панель и закрепляемые окна;

Простой рабочий процесс и файловая иерархия;

Статистика мониторинга производительности в режиме реального времени;

Инструменты автоматизации;

Легкий рефакторинг и вставка фрагментов кода;

Поддержка разделенного экрана;

Список ошибок, который упрощает отладку;

Проверка утверждения при развертывании приложений с помощью ClickOnce, Windows Installer или Publish Wizard.

Недостатки: поскольку Visual Studio является супертяжелой IDE, для открытия и запуска приложений требуются значительные ресурсы. Поэтому на некоторых устройствах внесение простых изменений может занять много времени. Для простых задач целесообразно использовать компактный редактор или средство разработки PHP.

XCode

Набор инструментов для создания приложений под iPad, iPhone и Mac. Интеграция с Cocoa Touch делает работу в среде Apple простой, вы можете включать такие сервисы, как Game Center или Passbook, одним кликом мыши. Встроенная интеграция с сайтом разработчика помогает создавать полнофункциональные приложения «на лету».

Для использования языков Objective C и Swift на сегодня это лучшее, а для некоторых задач и вовсе единственное решение.

Недостатки: многие разработчики жалуются на стабильность среды, вынуждающую вносить дополнительные изменения в свои проекты после выхода очередной версии. Кроме того, XCode относительно сложная IDE для самопознания новичком. Именно поэтому рекомендуем вам пройти наш бесплатный интенсив по основам языка Swift. На нем мы рассмотрим тонкости работы с этой IDE.

Поддерживаемые языки: AppleScript, C, C++, Java, Objective-C.

Особенности:

Элементы пользовательского интерфейса можно легко связать с кодом реализации;

Компилятор Apple LLVM сканирует код и предоставляет рекомендации по решению проблем производительности;

Панель навигации обеспечивает быстрое перемещение между разделами;

Interface Builder позволяет создавать прототипы без написания кода;

Пользовательский интерфейс и исходный код можно подключить к сложным прототипам интерфейсов всего за несколько минут;

Редактор версий включает в себя файлы журнала и хронологии;

Распределение и объединение процессов удобно при командной работе;

Test Navigator позволяет быстро тестировать приложения в любой момент разработки;

Автоматически создает, анализирует, тестирует и архивирует проекты благодаря интеграции с сервером OX X;

Рабочий процесс настраивается с помощью вкладок, поведения и фрагментов;

Библиотека инструментов и каталог ресурсов.

Недостатки инструментальной среды разработки: для запуска Xcode нужен компьютер от компании Apple. А для загрузки создаваемых приложений в Apple Store — лицензия разработчика.

JetBrains WebStorm

Представляет собой инструмент для разработки web-сайтов и редактирования HTML, CSS и JavaScript кода. Решение обеспечивает быструю навигацию по файлам и генерирует уведомления о возникающих проблемах в коде в режиме реального времени. JetBrains WebStorm позволяет добавлять разметку HTML-документов или элементов SQL непосредственно в JavaScript. JetBrains WebStorm осуществляет развертывание и синхронизацию проектов через протокол FTP. Используя возможности кода HTML/XHTML и XML, WebStorm обеспечивает автоматическое завершение стилей, ссылок, атрибутов и других элементов кода. При работе с CSS осуществляется завершение кода классов, HTML-номеров, ключевых слов и т. д. WebStorm предлагает автоматическое решение таких проблем, как выбор формата, свойств, классов, ссылок на файлы и других атрибутов CSS. Решение позволяет использовать мощность инструмента Zen coding для верстки HTML, отображает действия тэга на web-странице. Продукт WebStorm осуществляет завершение кода JavaScript для ключевых слов, лейблов, переменных, параметров и функций DOM и поддерживает специфические особенности популярных браузеров. Реализованные в решении функции рефакторинга JavaScript позволяют преобразовывать структуру кода и файлов и .js. WebStorm обеспечивает отладку кода JavaScript и предоставляет широкий диапазон возможностей: нахождение точки останова в HTML и JavaScript, настройка параметров точки останова, тестирование синтаксиса кода в режиме реального времени и т. д. Продукт поддерживает платформы JQuery, YUI, Prototype, DoJo, MooTools, Qooxdoo и Bindows. WebStorm предусматривает интегрированную проверку текста на тэги, последовательность кода, ошибки в написании и т. д. WebStorm позволяет редактировать файлы и автоматически синхронизировать их по требованию при удаленной работе или хранении. Продукт поддерживает функцию контроля версий и предварительных вариантов кода и фиксирует все произведенные действия и изменения. Благодаря созданию истории в WebStorm можно восстанавливать кодовые выражения, блоки и даже целые файлы.

NetBeans

Бесплатная среда разработки с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-dropинтерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.

Поддерживаемые языки программирования: C, C++, C++ 11, Fortan, HTML 5, Java, PHP и другие.

Особенности:

Интуитивный drag-and-drop интерфейс;

Динамические и статические библиотеки;

Интеграция нескольких сессий GNU-отладчика с поддержкой кода;

Возможность осуществлять удаленное развертывание;

Совместимость с платформами Windows, Linux, OS X и Solaris;

Поддержка Qt Toolkit;

Поддержка Fortan и Assembler;

Поддержка целого ряда компиляторов, включая CLang / LLVM, Cygwin, GNU, MinGW и Oracle Solaris Studio.

Недостатки: эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.

PyCharm

Разработан командой Jet Brains. Комплексная поддержка кода и анализ делают PyCharm лучшей IDE для Python-программистов.

Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.

Особенности:

Совместимость с операционными системами Windows, Linux и Mac OS;

Поставляется с Django IDE;

Легко интегрируется с Git, Mercurial и SVN;

Настраиваемый интерфейс с эмуляцией VIM;

Отладчики JavaScript, Python и Django;

Поддержка Google App Engine.

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

Eclipse

Гибкий редактор с открытым исходным кодом. Он может оказаться полезен, как для новичков, так и для профессионалов. Первоначально создаваемый как среда для Java-разработки сегодня Eclipse имеет широкий диапазон возможностей благодаря большому количеству плагинов и расширений. Помимо средств отладки и поддержки Git / CVS, стандартная версия Eclipse поставляется с инструментами Java и Plugin Development Tooling. Если вам этого недостаточно, доступно много других пакетов: инструменты для построения диаграмм, моделирования, составления отчетов, тестирования и создания графических интерфейсов. Клиент Marketplace Eclipse открывает пользователям доступ к хранилищу плагинов и информации.

Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.

Особенности:

Множество пакетных решений, обеспечивающих многоязычную поддержку;

Улучшения Java IDE, такие как иерархические представления вложенных проектов;

Интерфейс, ориентированный на задачи, включая уведомления в системном трее;

Автоматическое создание отчетов об ошибках;

Параметры инструментария для проектов JEE;

Интеграция с JUnit.

Недостатки: многие параметры этой среды разработки могут запугать новичков. Eclipse не обладает всеми теми функциями, что и IntelliJ IDEA, но является IDE с открытым исходным кодом.

Code::Blocks

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

Поддерживаемые языки: C, C++, Fortran.

Особенности:

Простой интерфейс с вкладками открытых файлов;

Совместимость с Linux, Mac и Windows;

Написана на C++;

Не требует интерпретируемых или проприетарных языков программирования;

Множество встроенных и настраиваемых плагинов;

Поддерживает несколько компиляторов, включая GCC, MSVC ++, clang и другие;

Отладчик с поддержкой контрольных точек;

Текстовый редактор с подсветкой синтаксиса и функцией автоматического заполнения;

Настраиваемые внешние инструменты;

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

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

Aptana Studio 3

Самая мощная из IDE с открытым исходным кодом. Aptana Studio 3 значительно улучшена по сравнению с предыдущими версиями. Поддерживает большинство спецификаций браузеров. Поэтому пользователи этой IDE могут с ее помощью быстро разрабатывать, тестировать и развертывать веб-приложения.

Поддерживаемые языки: HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python.

Особенности:

Подсказки для CSS, HTML, JavaScript, PHP и Ruby;

Мастер развертывания с простой настройкой и несколькими протоколами, включая Capistrano, FTP, FTPS и SFTP;

Возможность автоматической установки созданных приложений Ruby и Rails на серверы хостинга;

Интегрированные отладчики для RubyMine и Rails и JavaScript;

Интеграция с List;

Простой доступ к терминалу командной строки с сотнями команд;

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

Недостатки: есть проблемы со стабильностью, и она работает медленно. Поэтому профессиональные разработчики могут предпочесть более мощную HTML среду разработки.

Заключение

Целью данного обзора была попытка дать представление о всем многообразии существующих языков программирования. Среди программистов часто бытует мнение о всеобщей применимости того или иного языка (C, C++, Pascal и т.п.). Это мнение возникает по нескольким причинам: недостаток информации, привычка, инертность мышления. Настоящий профессионал должен постоянно стремиться повышать свои профессиональную квалификацию. А для этого нужно не бояться экспериментировать. Разумеется, прежде чем приниматься использовать новый язык, нужно внимательно изучить все его особенности, включая наличии эффективной реализации, возможности взаимодействия с существующими модулями и т.п., и только после этого принимать решение. Конечно, всегда есть риск пойти не тем путем, но не ошибается лишь тот, кто ничего не делает.

Библиография

  1. Хеник Б. HTML и CSS. Путь к совершенству / Хеник Б. - П.: Питер, 2011. - 333 с.
  2. Доусон М. Изучаем С++ через программирование игр / Доусон М. – Питер СПб 2016 – 252 с.
  3. Джош Локхарт Современный PHP / ДМК Пресс. - 2016 – 304 с.
  4. Любанович Билл. Простой Python. Современный стиль программирования / Билл Л. – Россия, 2019 – 480с.
  5. Коузен Кен. Современный Java, рецепты программирования / Кен. К. – ДМК Пресс, 2018 – 274с.