Энциклопедия мобильной связи

Языки программирования и их особенности. Язык программирования и его виды

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

  1. Машинные или машинно-ориентированные (низкого уровня)
  2. Алгоритмические (высокого уровня)

Язык низкого уровня ориентирован на конкретный тип процессора и записывается в машинных кодах (0 или 1). Этот язык понятен компьютеру, но не понятен человеку. Например, язык АССЕМБЛЕРА

Языки программирования высокого уровня – записываются с помощью английских слов и фраз. То есть такой язык понятен человеку но

не понятен компьютеру. Эти языки нужно переводить на машинные коды. Для этого применяются трансляторы. Они делятся на:

  1. Компиляторы – сразу переводят исходный текст программы на язык машинных кодов. После этого формируется командный файл (.exe или.com) и сама исходная программа уже не нужна.
  2. Интерпретаторы – они переводят исходный текст программы по шагам. И каждый раз при запуске обращаются к исходному тексту. Очень удобно при отладке программ.

Еще есть понятие «компоновки» программ, то есть сбор откомпилированных элементов в единый программный модуль

Этапы компьютерного моделирования:

  1. Постановка задачи и определение объекта моделирования
  2. Разработка концептуальной модели, выявление основных элементов и их взаимосвязей
  3. Формализация и переход к модели
  4. Создание алгоритма и написание программы
  5. Планирование и проведение компьютерных экспериментов
  6. Анализ и интерпретация результатов

Массив относится к составным типам данных. Доступ к элементу массива осуществляется по имени массива и номеру элемента. Элементы массива в памяти компьютера упорядочены по возрастанию индексов.

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

Критерии качества программных систем: надежность, правильность, понятность, гибкость, эффективность

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

Perl – язык сценариев

В процедурных языках программирования отсутствует комплексный тип данных

Виртуальная машина Java – интерпретатор

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

JavaSCRIPT – язык сценариев

SQL – язык манипулирования данными используется для выборки, вставки и удаление информации в реляционных базах данных.

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

HTML и XML – языки разметки данных

С – язык применяемый для структурного программирования

Основными элементами объектно-ориентированного программирования являются:

  1. Класс
  2. Объект - экземпляр класса
  3. Событие, которое происходит с объектом
  4. Метод который выполняется над объектом
  5. Свойство

Базовыми понятиями объектно-ориентированного программирования являются:

  1. Полиморфизм – использование одного имени для задания общих для класса действий, что означает способность объектов выбирать внутренний метод исходя из типа данных
  2. Наследование – свойство ООП, которое может быть смоделировано с помощью таксономической классификационной схемы (иерархии)
  3. Инкапсуляция – означает возможность заключать в отдельный модуль процедуры работы с объектом

Основой метода структурного программирования являются: (программирование «сверху-вниз»)

По другому это программирование без «GoTo»

  1. Использование композиции трех базовых элементов: ветвления, линейной структуры и цикла
  2. Использование подпрограмм

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

Для системного программирования наиболее подходят языки: С, С++ и Ассемблер

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

На этапе синтаксического анализа при трансляции выявляются ошибки типа «пропущена точка с запятой»

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

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

2. Что такое язык программирования

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

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

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

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

· Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между собой. В принципе, можно обобщить определение "языков программирования" - это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.

· Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

3. Этапы решения задачи на ЭВМ.

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

Постановка задачи. Этот этап заключается в содержательной (физической) постановке задачи и определении конечных решений.

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

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

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

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

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

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

Анализ результатов. Результаты расчетов тщательно анализируются, оформляется научно-техническая документация.

4. Для чего нужны языки программирования

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

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

Всё множество языков программирования можно разделить на две группы: языки низкого уровня и языки высокого уровня.

К языкам низкого уровня относятся языки ассемблера (от англ. toassemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, - символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом.

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

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

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

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

Общие сведения

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

  • машинные (языки программирования низкого уровня);
  • машинно-ориентированные (ассемблеры);
  • машинно-независимые (высокого уровня);

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

  1. Java.
  2. HTML.
  3. Visual Basic.
  4. Delphi.

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

Основы программирования

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

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

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

Разработка приложений

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

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

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

SQL

Специализированный язык программирования предназначен в первую очередь для работы с системами управления базами данных и их программирования. SQL переводится как "специализированный Поскольку в последние десятилетия рынок СУБД вырос многократно, популярность этого языка не становится сюрпризом.

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

Javascript

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

Технология Java - это основа, позволяющая в неограниченных количествах увеличивать инфраструктуру предприятий и компаний, способная связать воедино системы самого различного калибра, начиная от подключения к сети телефона по Wi-fi и заканчивая суперкомпьютерами.

XML

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

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

Программируем по-русски

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

  • 1С:Предприятие. Целая система, предназначенная для управления организацией во всех сферах деятельности. Нередко в объявлениях по поиску сотрудников можно встретить "Программист 1С".
  • Глагол. Аналог англоязычного Pascal.
  • Робик. Специализированный язык программирования, предназначенный для обучения детей основам программирования.
  • Рапира. Язык с основанный на процедурах.

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

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

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

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

  • простыми,
  • сложными и
  • непонятными (например, графическими).

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

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

Нулевое поколение

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

Жаккардовый станок

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

С помощью станка можно было легко и массово производить вышивки на ткани при помощи перфокарт, представленных ниже на рисунке:

Рис. 1. Перфокарты для ткацкого станка Жаккарда

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

Машина Беббиджа

Интернет и Веб

Появились специализированные языки:

  • JavaScript.

Многие сайты написаны с помощью PHP и JavaScript.

Некоторые ранее существовавшие языки с появлением Интернета и Веба нашли новые ниши и стали веб-ориентированными:

  • Ruby,
  • Pynton,
  • Java.

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

Любой язык программирования – это искусственный язык, который имеет свой цикл жизни. Аналогично, операционные системы семейства Windows тоже имеют свои жизненные циклы: .

Жизненный цикл языка программирования:

  • создание,
  • early adoption (первоначальное использование языка),
  • (промышленный) успех,
  • угасание, смена другими языками.

В современном мире основная часть программного обеспечения (софта) пишется на 10-15 языках, хотя за все время, которое нам известно, было создано больше сотен языков программирования. Официально как-то зарегистрировано 300 или 400 языков.

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

Язык – это

  • синтаксис (правила написания программ),
  • семантика (поведение элементов, которые входят в правила написания и встроены в язык),
  • runtime (среда выполнения).

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

Синтаксис на примере Lisp

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

Рис. 10. Программа на LISP

LISP является очень старым языком, который вырабатывает списки. Грамматика такого языка – это грамматика списков, читается сверху вниз.

  • В Лиспе есть выражения: может быть один атом, либо список;
  • atom – это число или символ,
  • number – число, то есть, с плюсом или минусом цифры, не менее одной,
  • symbol – это буквы, сколько угодно раз, можно даже много раз,
  • list – список, выражения в скобочках более одного раза.

Программа на Лиспе – это список списков. Знаков препинания в Лиспе нет, но есть скобочки. Могут быть такие длинные программы на Лиспе, где в конце идет 2-3 листа, состоящих из одних закрывающих скобочек.

Простейший интерпретатор Лиспа занимает всего 19 строк! Ни один другой язык не может себе позволить себе такой роскоши.

Семантика

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

Варианты представления семантики довольно ограничены.

Семантика может быть:

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

Семантика разделяется на две части:

  • статическую,
  • динамическую.

Статическая семантика

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

Динамическая или фронтальная семантика этапа выполнения

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

Система типов данных в языках программирования

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

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

Если же система типов присутствует, то можно провести деление языков программирования на два независимых друг от друга класса, которые приведены ниже.

Система типов данных:

  • типизированный или нетипизированный язык
  • статическая или динамическая типизация
  • строгая или слабая типизация

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

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

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

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

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

Следующая важная характеристика языка –

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

  • с греческого – шаблон, пример, образец;
  • это система идей и понятий, определяющих стиль написания программ на этом языке – то, как язык предполагает написание программ на нем (wiki);
  • язык «благоволит» одной или нескольким парадигмам (мультипарадигменность).

Главные парадигмы

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

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

Еще одной важной частью языка, которую нужно учитывать при использовании языка, является Runtime – то, как язык выполняется.

Runtime – выполнение программы

Программа может выполняться по-разному:

  1. самым простым и наивным способом выполнения программы является интерпретация – чтение исходного кода в момент запуска. Так работают легкие, скриптовые языки. Также работает сам программист: когда он написал программу, то смотрит своими глазами на собственную программу и прикидывает, как его программа будет работать и что делать;
  2. распространенным способом запуска программ является компиляция в машинный код – отдельный шаг до запуска. Есть отдельный инструмент – компилятор, где читаются исходники программы, что-то с ними делают, преобразуя в машинные коды, которые понятны текущей системе. Потом этот код выполняется непосредственно «железки»;
  3. гибридный способ – это байт-компиляция и выполнение в виртуальной машине. Компилятор читает исходный код, после чего производится байт-код, который выполняется в виртуальной машине.

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

Представители языков

Язык C

– один из самых популярных, один из самых важных по физически написанному по нему коду, практически это «наше всё».

Он создан в 1972 году, создатели – Деннис Ритчи (Dennis Ritchie) и коллеги. Д.Ритчи создал также систему Linux и многие другие полезные вещи.

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

Кстати, С актуален до сих пор, используется для:

  • системного программирования (например, ядро Linux написано на C),
  • number-crunching (так называемые числа-дробилки, то есть, для больших вычислений, где важно быстродействие),
  • программирования микроконтроллеров и встраиваемых систем.

С – низкоуровневый язык, можно сказать, что это Ассемблер с человеческим лицом, ибо почти любую конструкцию C человек может вручную преобразовать в Ассемблер и получатся довольно понятные операции.

Программы на C получаются очень компактные. Они не намного больше, чем если бы аналогичные программы были написаны на Ассемблере. При этом разработка на C проходит намного быстрее, чем на Ассемблере.

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

Рис. 11. Пример простой программы на C.

Java

  • Создан в 1995 году,
  • создатели – Джеймс Гослинг (James Gosling) и Sun Microsystems (в этой компании работал Гослинг).
  • Объектно-ориентированный, императивный (C императивный, но НЕ объектно-ориентированный),
  • строго- и статически-типизированный,
  • байт-компилируемый с виртуальной машиной,
  • нет доступа к памяти, автоматическая сборка мусора (последняя работает хорошо, если имеется треть или четверть свободной памяти).

В 90-ых годах JAVA получила большую популярность как мультиплатформенный язык. Один раз написав виртуальную машину для какой-то платформы, допустим для Windows или для Linux или для Mac, можно любые программы на JAVA запускать на ней без перекомпиляции. Поэтому язык был популярен в эпоху веба, когда было разных платформ (разные версии Windows, разные Маки). Программы на JAVA работали быстро и довольно хорошо на разных платформах.

Используется для:

  • прикладного программирования, в том числе для веб-программирования,
  • встраиваемых систем (если С используется для микроконтроллеров, то JAVA – для мобильных телефонов, терминалов и т.п.),
  • высоконагруженных систем с большим количеством пользователей (банковские программы, системы управления воздушным движением и т.п.).

Следует отличать спецификации языка Java и различные реализации JVM:

  • Sun JDK (от компании Sun, ныне это Oracle),
  • IBM JDK (продается за деньги),
  • OpenJDK (абсолютно свободная)
  • и т.п.

Рис. 12. Пример простой программы на JAVA.

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

Тем не менее JAVA очень популярна, в частности, на ней написана клиентская часть операционной системы .

Lisp

  • Он действительно завершает Lis t P rocessor (LisP);
  • создан в 1958 году;
  • создатели – Джон Маккарти;
  • чистый функциональный язык, несмотря на довольно странный синтаксис;
  • строго- и динамически- типизированный;
  • как правило, интерпретируемый;
  • нет доступа к памяти, автоматическая сборка мусора, которая ложится на интерпретатор, а не на виртуальную машину.

Используется для:

  • научного программирования и исследований;
  • искусственный интеллект – Lisp был создан в самом начале по поиску с интеллектом. В конце 1950-ых – начале 1960-ых в научных кругах было сильное ощущение, что вот-вот будет создан искусственный интеллект. Тогда считалось, что ключевыми особенностями искусственного интеллекта будет возможность оперировать естественным языком, текстом, читать, говорить и делать какие-то разумные вещи. Для обработки смысловых данных из текста был создан Lisp, он позволяет такие вещи делать хорошо;
  • всего, чего угодно, но, как правило, используется не очень эффективно.

Язык Lisp, разработанный в 1958 году, претерпел массу изменений.

У него есть множество реализаций и диалектов:

  • CommonLisp (создан в 1970-ых) – классическая реализация, которая считается основной;
  • Scheme (схема) – упрощенный диалект, который некоторые вещи из CommonLisp выбрасывает и позволяет делать проще;
  • Clojure – диалект Lisp в плане языка, но работает поверх JAVA-машины, то есть компилируется в байт-код и исполняется также, как будто это JAVA-программа.

Рис. 13. Программа на LISP: сортировка пузырьком

Python (Питон)

  • Назван в честь британского шоу 1970-ых годов Monty Pynton’s Flying Circus (там старые шутки, но смешные)
  • создан в 1991 году
  • создатель – голландец Guido van Rossum
  • мультипарадигменный язык, объектно-ориентированный, императивный, функциональный
  • строго- и динамически-типизированный
  • интерпретируемый, байт-компилируемый с виртуальной машиной (в зависимости от реализации)

Используется для:

  • скриптового программирования
  • веб-программирования
  • научного программирования (имеются большие, сильные пакеты для работы с моделированием, с вероятностью, со статистикой и в других областях, которые объединяют в себе опыт, накопленный в других областях)

Python – спецификация языка. Существует несколько основных реализаций:

  • CPython – основная (reference)
  • Jython – поверх JVM
  • PyPy – Python in Python («Питон на Питоне» работает быстрее и лучше, чем CPython и Jython)

Рис. 14. Программа на Python: сортировка пузырьком

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

Выбор языка под задачу

Как выбрать язык под задачу, когда Вы знаете, что Вам нужно сделать, но не знаете на чем?

Важный совет: используйте то, на чем Вы умеете программировать. Это гораздо лучше, чем использовать то, на чем Вы НЕ умеете программировать.

Экосистема

Язык, который Вы хотите взять, не должен быть «голым» языком, у него должна быть экосистема, которая включает:

  • средства разработки (удобное IDE)
  • готовые библиотеки и фреймворки
  • инструменты тестирования для запуска тест-кейсов: тестовые фреймворки и инструменты
  • системы пакетирования и развертывания для того, чтобы написанный код можно было упаковать, куда-то выложить, чтобы другие могли легко воспользоваться. У языка Си нет такой возможности, а у языков Руби и Питон есть.
  • коммьюнити. Не надо пользоваться мертвыми языками, какими бы классными они не были. Если не у кого спросить, Вы останетесь в полном тупике. Считается, что одни коммьюнити более дружелюбные, другие – менее. Например, коммьюнити Руби классное, а коммьюнити Java ужасное – там даже спрашивать ничего не надо.

Популярность

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

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

Скорость обучения

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

JAVA – язык простой в изучении и простой по возможностям, а дальше все строится не за счет языка, а за счет инструментов.

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

Нишевость языков

Конкретные языки лучше подходят для решения определенных нишевых задач.

Пример 1: веб приложение, которое

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

Для такой задачи, скорее всего, подойдет Python или Ruby. Не надо это делать на JAVA

Пример 2: биллинговая система сотового оператора

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

В этом случае наш выбор – Java, С++, Erlang – богатые языки с богатым инструментарием.

Пример 3: код бортовой ЭВМ для спутника

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

Наш выбор – С и С-подобные языки (и даже ассемблер), потому что очень мало ресурсов и эти требования надо соблюсти.

Статья основана на видео:

Как правильно выбрать язык программирования – Иван Калинин

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

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

Один из достаточно популярных языков Web-программирования, который, в прочем, на белорусском рынке труда не всегда способен обеспечить своего носителя топовым по заработной плате рабочим местом. Курсы Ruby вряд ли стоит изучать для освоения первого языка программирования, потому что с высокой долей вероятности поиски работодателя затянутся, ведь вакансии для junoir’ов на Ruby появляются довольно редко.

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



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!