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

Обзор языков программирования высокого уровня (Понятие и развития языка программирования)

Содержание:

ВЕДЕНИЕ

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

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

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

Цели данной работы являются:

  1. Изучить историю и развитие языков программирования
  2. Рассмотреть концепции языков программирования
  3. Сделать обзор языков программирования высокого уровня

Задачи данного исследования:

  1. Дать определение понятию «язык программирования».
  2. Проанализировать «набор правил», использующиеся в языках программирования.
  3. Провести обзор определенных языков программирования.

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

ГЛАВА 1. Языки программирования. Основы

1.1 Понятие языка программирования

Компьютеры могут управляться только инструкциям, которые им выдаются. Для того чтобы они (инструкции) были понятны как пользователю, так и компьютеру, должен быть интерфейс, облегчающий связь. Именно здесь появляются языки компьютерного программирования - их основная функция заключается в содействии общению между компьютером и пользователем. Они обеспечивают связь между человеческим и машинным языками [1].

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

В программирование, для преобразования языка программирования более высокого уровня в исполняемый машинный код, существуют два способа трансляции — это компиляторы и интерпретаторы [1]. Компиляторы берут исходный код языка более высокого уровня и изменяет его в объектный код (1 и 0). Это преобразует всю программу за один раз, а затем сохраняет ее в преобразованной форме. Одним из преимуществ использования компилятора является отсутствие ошибок в синтаксисе при запуске программы, так как они (ошибки) обнаруживаются раньше на этапе трансляции. Однако компилятору требуется пространство для размещения как исходных, так и объектных файлов. С другой стороны, интерпретаторы - последовательно транслируют и выполняют один оператор, прежде чем перейти к следующему. Это означает, что перевод и выполнение происходят одновременно, а не отдельно, как с компилятором. Основным преимуществом интерпретатора является то, что он более эффективен при отладке программ. Однако интерпретаторы страдают от более низкой скорости выполнения, чем компиляторы, поскольку каждая строка должна быть переведена и выполнена, тогда как компиляторы переводят все сразу.

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

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

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

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

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

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

Все началось в 1950-х годах с FORTRAN, Cobol и Lips, хотя до них было много пионеров. Так, например, греки и китайцы умели рассчитывать, автоматизировать (вручную) расчеты. Но отталкиваться будем от двух важных дат. В 820 году математик Аль-Хорезми опубликовал в Багдаде трактат под названием «Краткая книга восполнения и противопоставления», который, импортированный в Западную Европу во время арабских нашествий, оказал большое влияние на развитие математики. В 1840 году Ада Лавлейс (1814-1852) определила принцип последовательных итераций при выполнении операции. В честь трактата Аль-Хорезми («Dixit Algorizmi» на латинском) она (вероятно) назвала «алгоритм» логическим процессом выполнения программы. Для нее вычислительная машина должна включать в себя:

• устройство для ввода цифровых данных (перфокарты, зубчатые колеса и так далее.),

• память для хранения введенных числовых значений,

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

• «мельница», ответственная за проведение расчетов,

• устройство, позволяющее узнать результаты (принтер и т. д.).

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

Самым старым искусственным вычислительным устройством, кроме счётов, является арифметическая машина Блеза Паскаля. До того, как были созданы языки программирования, бумажные ленты и перфокарты, в которых содержались сложные узоры для ткацкого станка Жаккарда в 1710 году. Спустя столетие Чарльз Бэббидж начал строить вычислительную машину и аналитическую машину. В 20 веке Герман Холлерит основал табулирующую машину. Его машинные табуляторы использовались для ускорения подсчета и сортировки перфокарт. В начале 1940-х годов Дж. Преспер Эккерт и Джон Мокли начали строить ENIAC (электронный числовой интегратор и калькулятор), который был завершен в 1946 году. Примерно в то же время, ближе к концу Второй мировой войны, Конрад Цузе начал строить электромеханические компьютеры в Германии. После того, как Цузе успешно завершил сборку своего компьютера в 1945 году, он понял, что у него нет дополнительного оборудования для ремонта или какой-либо разработки оборудования. Затем он переключил свое внимание с аппаратного обеспечения на разработку языков программирования. Конрад Цузе часто называют «отцом» современного компьютерного программирования из-за его вклада в первый язык программирования «Plankalkül», который был достаточно мощным, чтобы иметь возможность выполнять сложные программы.

В 1950-е года изобретение ассемблера Мориса В. Уилкса из Кембриджского университета открыло путь к так называемым языкам программирования высокого уровня. До этого программирование осуществлялось непосредственно в двоичном формате. Грейс Мюррей Хоппер (1906-1992), мобилизованная в качестве вспомогательного средства в американском флоте, разработала для «Remington Rand» самый первый компилятор, названный A0, который позволял генерировать двоичную программу из «исходного кода». После этого языки программирования превратились в языки ассемблера, которые быстро стали популярными и с которыми стало намного проще работать. Машинный код и язык ассемблера обычно известны как языки низкого уровня [3]. Язык ассемблера дает программисту преимущество, заключающееся в том, что он может указывать, где программист хочет выделить, где будут начинаться память и данные. Это освобождает программиста от ответственности за тщательный контроль над памятью. Языки высокого уровня, с другой стороны, снимают всю ответственность с программиста. Скорее, использование имен переменных позволяет программисту ссылаться на определенные части программы. Недостатком является то, что язык ассемблера очень ограничен, поскольку он предоставляет только те возможности, которые уже есть в машинном коде. Введение языка ассемблера в 1950-х годах проложило путь и дало ключ к более позднему производству языков программирования высокого уровня.

Самым первым языком программирования высокого уровня был FORTRAN, что означает FORmula TRANslation. Он был разработан в 1956 году Джоном Бакусом, сотрудником IBM. Целью FORTRAN было облегчить написание на ассемблере. Когда впервые был представлен FORTRAN, на него смотрели с подозрением, так как почти все программисты тогда работали только с машинным кодом и языками ассемблера [4]. Они изначально полагали, что программы, составленные на языке высокого уровня, будут менее эффективными, чем программы, написанные на низком уровне. Чтобы убедить потенциальных пользователей в преимуществах работы с языком высокого уровня, Джон Бэкус разработал отличный компилятор для FORTRAN, чтобы программы были такими же эффективными, как и написанные на языках низкого уровня. Это был лучший компилятор за многие годы. Однако одним из ограничений FORTRAN было то, что он был специально ориентирован на машину IBM 704. Это серьезное препятствие, так как синтаксис языка содержит много специфических особенностей машины IBM 704. Фортран известен своей эффективностью. За прошедшие годы FORTRAN был модернизирован и превращен в FORTRAN-II, FORTRAN-IV, FORTRAN-66 и FORTRAN-77. Ранние версии FORTRAN в значительной степени ограничивали пользователей. С другой стороны, более поздние версии допускали большую гибкость, но, поскольку она адаптировалась, ее использовать не так просто, как следовало бы. Развитие быстрой обработки строк делает FORTRAN более универсальным языком, чем раньше, но он все еще описывается как математический или научный язык.

В то время как язык FORTRAN начал появляться примерно в 1956 году, особенно в IBM, Грейс Хоппер заинтересовалась языками, которые используют слова или даже выражения из «естественного языка». После создания Flow-matic (или B0) она участвовала в 1959 году в разработке языка Cobol (COmmon Business Oriented Language). Cobol получил широкую поддержку правительства США. Первоначально Cobol был разработан для того, чтобы стать общим деловым языком в стране. Проект Cobol обсуждался в Пентагоне с 6 производителями компьютеров. Возможно, поэтому язык все еще используется, хотя он очень многословный и не содержит логических модулей, что приводит к уникальному стилю. Одно из преимуществ Cobol — это определенные приложения, связанные с обработкой долларов и центов.

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

В то же время (около 1958 г.) математик в Массачусетском технологическом институте Джон МакКарти, основавший там в 1957 г. отдел искусственного интеллекта, создал язык Lisp. В отличие от FORTRAN, Lisp был разработан как функциональный язык для обработки списков. LISP является одним из наиболее используемых старых, «классических» языков программирования, разработанных в 1950-х годах. Дизайн был мотивирован необходимостью исследователей искусственного интеллекта для соответствующего языка. С другой стороны, Lisp остается ограниченным сообществом искусственного интеллекта.

В 1958 году, комиссия представителей GAMM (Европейская организация, собирающая исследователей в области обработки данных) и ACM (ее американский эквивалент) встречается в Цюрихе и пишет предварительный отчет о «международном алгебраическом языке» под названием LAI или Algol58 [5]. Algol станет языком для публикации алгоритмов, но он не будет полностью реализован, несмотря на его модификацию в Algol W, а затем в Algol68. Это связано со сложностью в реализации для того времени.

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

В 1962 году канадский математик Кеннет Айверсон создал систему обозначений для математики, которая благодаря IBM станет языком программирования APL, который является очень оригинальным, поскольку он содержит не слова, а специальные символы. Требуется специальная клавиатура, которая значительно замедлит его распространение. Несмотря на широкое распространение и широкое использование, в мире программирования он всегда будет оставаться обособленным.

Как только использование языков высокого уровня стало более распространенным, программисты захотели создать язык программирования, который послужил бы простым введением в Фортран. В результате был разработан язык BASIC Томасом Курцем и Джоном Кемени в Дартмутском колледже в 1963-1964 годах как простой и интерактивный язык. Однако сейчас BASIC (Beginner’s All Purpose Symbolic Instruction Code) является наиболее часто используемым языком на микрокомпьютерах. Основной целью было простое введение, которое подготовило бы студентов к использованию FORTRAN. BASIC легче программировать и имеет удобный синтаксис, чем FORTRAN. Единственный аспект, в котором FORTRAN лучше, чем BASIC, — это то, что он обладает более продвинутыми возможностями. BASIC — это язык общего назначения. Поскольку раннее использование BASIC было в образовании, исходный язык был довольно примитивным и имел только имена переменных. Тем не менее, люди обнаружили, что BASIC можно использовать в качестве языка программирования приложений. Интересно, что BASIC не был очень популярен, когда он только появился. Тем не менее, микрокомпьютеры приняли BASIC в качестве предпочтительного языка, поскольку он был интерпретирующим языком. Например, BASIC является основой и большим влиянием для таких языков, как Microsoft Visual Basic и объектно-ориентированный язык Visual Basic .NET.

Много других программ появилось, чтобы улучшить язык FORTRAN. Algol-60 был создан в 1958 году как усовершенствование FORTRAN. Затем он был переработан, улучшен, и окончательный вид обрел в 1960 году. Ключевые особенности Algol-60 заключаются в том, что синтаксис и семантика являются более ортогональными и синтаксис языка определяется формально. Этот язык является одним из самых изобретательных усилий по определению языка в первые дни языков программирования, но никогда не получал широкого признания. Основными нововведениями в языке является то, что в Algol реализована структура вложенных блоков, в которой последовательности кода и связанные с ними объявления могут быть сгруппированы в блоки без необходимости использования отдельных процедур с явным именем. Кроме того, в Algol реализована лексическая область видимости - где блок может состоять из частных переменных, процедур и функций, но невидим для кода вне блока, который в основном скрывает информацию. Утверждается, что Algol 60 является очевидной вехой в развитии языков программирования из-за его введения ключевых понятий и его первого использования формальной нотации для синтаксиса. Главными недостатками, были упущение ввода-вывода и, в меньшей степени, дорогостоящий метод передачи параметров «по имени». В Algol-60 есть много улучшений, таких как Algol-W, который был разработан в середине 1960-х годов. Алгол-W очень тесно связан с Алголом-60, хотя они не совместимы друг с другом. Самая большая разница между Algol-W и Algol-60 заключалась в том, что параметры больше не передаются по имени и формулировка цикла «for» была переработана.

Следующие три языка программирования - Pascal, C и Prolog, разработанные в 1970 и 1972 годах, являются одними из ключевых языков периода бума языков программирования, хотя C и Prolog породили значимые языки-потомки. Самое главное, что этот период был, когда были созданы языковые парадигмы или определенные «стили». Этот период разработки программного обеспечения также вызвал большие дебаты по вопросу о переходе к структурированному программированию.

С 1968 года Никлаус Вирт разрабатывает Algol-68. Чтобы изменить его, он разработал преемника Algol, названного языком Pascal. На Pascal сильно повлиял Algol W. Одним из величайших преимуществ в Pascal является его «переносимость». В отличие от FORTRAN и BASIC, Pascal имеет собственный компилятор, который позволяет переносить программы на Pascal из разных систем. Pascal также является хорошо структурированным языком, потому что он позволяет сгруппировать ряд операторов, их программы сделаны очень удобочитаемыми, и они предоставляют универсальные процедуры и функциональные возможности [6]. Однако наибольшие ограничения заключались в том, что он не был разработан с учетом конкретной области применения. Поэтому Pascal — это больше язык общего назначения, но в нем отсутствуют специальные функции для конкретного приложения.

Язык программирования C был создан Деннисом Ритчи в 1972 году. Это язык общего назначения, не очень высокого уровня, и в основном используется в качестве языка системы для операционной системы UNIX. Язык C предоставляет широкий спектр управляющих структур, необходимых для написания хорошо структурированных программ. Язык программирования C не ведет себя как типичный язык высокого уровня, поскольку предлагает функции, аналогичные языкам низкого уровня, поскольку он очень похож на исходный код. По сути, язык C — это системный язык, который обеспечивает доступ низкого уровня с операторами высокого уровня.

В начале 1970-х годов Филипп Руссель и Ален Кольмерауэр в своей группе по искусственному интеллекту в Марселе разработали язык, который работает совершенно иначе, чем другие языки - Prolog и становится предпочтительным языком для искусственного интеллекта. Prolog - это непроцедурный язык с упором на «логическое программирование». В программе Prolog невозможно выразить алгоритм решения проблемы. Программист определяет, что должно быть сделано, а Prolog делает все остальное - программе требуется база данных фактов или знаний - пользователь будет задавать вопросы, а Prolog отвечает списком всех возможных правильных ответов, которые получены баз. Недостатком языка Prolog является то, что обычная одиночная операция отнимает много процессорного времени.

Еще в 1970 году министерство обороны США обнаружило, что во встроенных системах было слишком много языков ассемблера и хотело бы использовать единый язык программирования. В 1975 году исследовательская группа изучила 23 языка, которые уже существовали. Заключение анализа будет состоять в том, что потребуется новый язык, вероятно, основанный на Pascal или Algol. После объявления о проведении тендеров и нескольких отборов, в конце концов, это был проект Жана Ишбиа в 1979 году с командой Honeywell Bull из Марселя, которая была выбрана. Этот язык будет называться Dod-1, а затем Ada, названный в честь Ады Лавлейс. В 1983 году после почти десятилетнего тщательного изучения предыдущих ошибок в дизайне языка программирования – появился язык Ada [6]. Некоторые в области компьютерных наук ожидали, что Ada станет первым языком с потенциалом стать универсальным, почти эксклюзивным языком будущего для встраиваемых систем. Фокус дизайна Ada был направлен Министерством обороны США, которое хотело программу, которая уменьшит количество военных стандартных языков. У Ada было уникальное преимущество: ее определили как американский национальный стандарт до того, как какая-либо реализация стала доступной, что спасло его от распространения искаженных языковых версий. Ada включает в себя лучшие идеи Паскаля, исправленные ошибки и упущения, и имеет гораздо более широкий спектр применения, чем Паскаль.

ГЛАВА 2. Обзор языков программирования высокого уровня

2.1 C++

В начале 80-х годов было посвящено развитие малых вычислительных систем и микрокомпьютеров: появление первых компьютеров и Apple. Однако постепенно начали набирать популярность объектные языки программирования, которые лучше структурированны, легко изменяемые и более безопасны. Одним из таких является язык C++. В 1983 году Бьёрн Страуструп разработал объектно-ориентированное расширение языка C, которое станет языком C++ [7].

C++ является одним из самых популярных языков, когда-либо созданных и широко используемых в индустрии программного обеспечения. Этот язык программирования, в отличии от языка C, включает в себя добавление классов, обработка исключений, виртуальные функции, перегрузка операторов, управление памятью в свободном хранилище и улучшенная проверка типов. Бьёрн Страуструп разработал C++ как идеальную программу для работы с программным обеспечением. Когда он работал в Software Development, он обнаружил, что программа Simula имеет очень полезные функции, но она слишком медленная для использования. Под сильным влиянием Simula он основывал свои улучшения языка C на функциях Simula и сочетал их с быстродействием и эффективностью языком C. Тем не менее, существует ряд серьезных критических замечаний по C++, такие как сложность в освоении, строки кода намного длиннее, нежели в языке C, отсутствуют функции для создания многопоточного программного обеспечения, отсутствие автоматического управления памятью («сборка мусора»).

Каждая программа на C++ должна быть написана в соответствии с очень строгими правилами написания. Для написания программы на данном языке необходимо создать один или несколько исходных файлов и скомпилировать их, чтобы получить исполняемую программу. Этот этап – компиляция. Исходные файлы - это читаемые текстовые файлы, имена которых обычно заканчиваются на .c, .cpp или .h. Исполняемые файлы обычно имеют расширение .exe под Windows и не имеют расширения под Linux. Для того чтобы менять код в исходных файлах, нужен компилятор, одним из которых может быть GNU Compiler Collection (GCC). Он является интегрированной средой разработки (IDE), который включает в себя полный набор инструментов, позволяющих редактировать и изменять исходные файлы, компилировать их, запускать исполняемый файл, «отлаживать» программу и так далее [8]. Существуют и многие другие компилятору не уступающие друг другу и имея свои преимущества. Например, Visual C++, C++ Builder, Dev-cpp (на основе GCC), Delphi и другие.

Рассмотрим код простой программы:

//коментарий

#include <iostream>

using namespace std;

int main()

{

cout << "The chosen one\n";

cin >>

return 0;

}

//коментарий

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

#include <iostream>

Директива #include обычно включает ряд инструкций, которые позволяют включать в программу определённые объекты, типы или функции. Имя файла может быть либо внутри < и >, либо в кавычках:

• #include <имя_файла> Включить имя файла, сначала найдя его в настроенных путях, а затем в том же каталоге, что и исходный файл,

• #include "имя_1" Включение имя файла «имя_1», отыскивая его сначала в том же каталоге, что и исходный файл, а затем в настроенных путях.

using namespace std;

Эта строка указывает на использование пространства имен std. Пространство имен — это набор классов, одним из которых является cout. Поскольку мы хотим использовать объект cout, необходимо указать, что по умолчанию мы будем использовать пространство имен std. Также следует отметить, что стандартные заголовочные файлы больше не имеют имен с расширением .h (например, iostream.h). Если эти заголовочные файлы включены без указания команды, использующей пространство имен std.

int main()

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

{ и }

Фигурные скобки сигнализируют, что о начале и конце функции.

cout << "The chosen one\n";

Это поток вывода программы (Console Output). Этот выходной поток по умолчанию отправляется на экран. Он будет использоваться для отображения сообщений на экране с помощью оператора << (в нашем случае текст «The chosen one»). \n рассматривается как единый символ, который обозначает новую строку.

cin >>

Это поток входа данных (Console Input). Она считывает данные из входного потока данных и ожидает нажатия клавиши ENTER.

return 0

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

Пройдем по основам языка программирования C++:

  1. В языке C++ определены следующие основные типы данных:
  2. Bool - логический тип. Может быть представлен значением true (истина) и false (ложь).
  3. Char - один символ в кодировке ASCII. Занимает в памяти 1 байт.
  4. Int - целое число. В зависимости от архитектуры процессора может занимать 2 байта или 4 байта. Диапазон может варьироваться от –32 768 до 32 767 или от −2 147 483 648 до 2 147 483 647.
  5. Short - целое число в диапазоне от –32 768 до 32 767. Занимает в памяти 2 байта.
  6. Long - целое число в диапазоне от −2 147 483 648 до 2 147 483 647. Занимает в памяти 4 байта.
  7. Long long - целое число в диапазоне от −9 223 372 036 854 775 808 до +9 223 372 036 854 775 807. Занимает в памяти 8 байт.
  8. Float - вещественное число с плавающей точкой в диапазоне 3.4E-38 до 3.4E+38. В памяти занимает 4 байта.
  9. Double - вещественное число с плавающей точкой в диапазоне 1.7E-308 до 1.7E+308. В памяти занимает 8 байт.
  10. Long double - вещественное число с плавающей точкой не менее 8 байт. В зависимости от размера занимаемой памяти может отличаться диапазон допустимых значений.
  11. Void: тип без значения.
  12. В языке программирования C++ арифметические операции могут быть бинарными (производятся над двумя операндами) и унарными (выполняются над одним операндом).

К бинарным операциям относят: +, -, *, /, % (получение остатка от деления).

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

  1. В языке программирования C++ существуют следующие операции отношения: == (равно), > (больше, чем), < (меньше, чем), <= (меньше или равно), >= (больше или равно), != (не равно), ! (отрицание), && (конъюнкция), || (дизъюнкция).
  2. В языке программирования C++ имеются условные конструкции:
  3. If – проверяет истинность условий, если проверка успешна, то выполняется блок.
  4. Else – выполняется, если условия в if не выполняется.
  5. Else if – альтернативный вариант условий.
  6. Switch – сравнение выражения.
  7. Case – выполняется если выражение в switch найдено после данного оператора.
  8. ? – тернарный оператор, является сокращением для конструкций if else.
  9. В языке программирования C++ для выполнения некоторых действий множество раз в зависимости от условий используются циклы:
  10. while (выполняется, пока условие истинно),
  11. for (установка начальной условий, затем предоставляет условие при соблюдении которого выполняется цикл, затем изменение параметров цикла),
  12. do…while (сначала выполняется код цикла, а потом происходит проверка условия в инструкции),
  13. break (прерывание цикла до его завершения),
  14. continue (переход к следующей итерации).
  15. В языке программирования C++ имеют место быть функции. Функция — это именованный блок кода. Она состоит из типа функции (int, string, void и другие), имени функции (ее идентификатор), параметров, тела функции, возвращение результата (return).
  16. В языке программирования C++ помимо существующих классов (int, float, string и другие) можно определять свои классы. Класс предназначен для описания некоторого типа объектов. То есть, по сути, класс является планом объекта. А объект представляет конкретное воплощение класса, его реализацию. Класс может определять переменные и константы для хранения состояния объекта и функции для определения поведения объекта.
  17. В языке программирования C++возможно обрабатывать исключения при возникновении ошибок. Одним из операторов является throw – через него можно передать информацию об ошибке. Другой оператор исключения – try…catch. Он в свою очередь является предостережением на случай потенциального возникновения ошибки.

В наше время язык программирования C++ является наиболее популярным и предпочтительным языком как для программирования, так и для обучения. Но на этом его история не закончилась и в 2002 году язык программирования C#. Будучи гораздо более современным языком программирования, C# был разработан для работы с текущей платформой Microsoft .NET в клиентских и веб-приложениях. В то время как C++ является объектно-ориентированным языком, C# считается компонентно-ориентированным языком программирования. Объектно-ориентированное программирование концентрируется на ассоциациях между классами, которые объединяются в большой двоичный исполняемый файл, в то время как компонентно-ориентированное программирование использует модули сменного кода, которые работают сами по себе, и вам не нужно знать их внутреннюю работу, чтобы использовать их.

Вот некоторые основные различия между C++ и C#:

  1. C++ компилируется в машинный код, а C# компилируется в CLR, что интерпретируется ASP.NET.
  2. C++ требует, чтобы вы обрабатывали память вручную, а C# работает на виртуальной машине, которая может автоматически обрабатывать управление памятью.
  3. C# не использует указатели, в то время как C++ может использовать указатели где угодно.
  4. C++ поддерживает множественное наследование в то время, как C# не может поддерживать.
  5. C++ можно использовать на любой платформе, хотя изначально он был разработан для систем на основе Unix. C# стандартизирован, но редко используется вне сред Windows.
  6. C++ может создавать автономные и консольные приложения. C# может создавать консоль, Windows, ASP.NET и мобильные приложения, но не может создавать автономные приложения.

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

2.2 Java

В начале 1990-х годов Sun Microsystems работала над проектом по разработке простого и высокопроизводительного программного обеспечения, работающего в Personal Digital Assistant (PDA). Язык C++ был выбран для программирования этого программного обеспечения, но язык он оказался неэффективным, особенно в отношении безопасности и простоты использования. Поэтому Джеймс Гослинг, один из участников проекта, решил создать объектно-ориентированный язык, включающий основные характеристики языка C ++, и при этом модернизировать его использование. Этим языком в последствии стал Java [9]. В отличие от обычных языков, которые обычно предназначены для компиляции в машинный код или для интерпретации из исходного кода во время выполнения, Java предназначена для компиляции в байт-код (обычно с использованием JIT-компиляции). Сам язык заимствует много синтаксиса из C и C++, но имеет более простую объектную модель и меньше средств низкого уровня. Еще одна особенность этого языка, а также его создания, заключалась в том, что он позволял генерировать машинный код, который мог быть выполнен на любой платформе: этот подвиг стал возможен благодаря включению эмулятор в среде выполнения. Проблема в том, что этот проект оказался не таким успешным, как следовало бы, и с определенной точки зрения Java могла бы исчезнуть. Однако в то же время появилась сеть. Интернет позволял машинам, подключенным через Интернет, обмениваться гипертекстовыми документами через HTTP (протокол передачи гипертекста) и HTML (язык разметки гипертекста). Эти машины были (и остаются) основаны на разнородном оборудовании и используют несколько операционных систем. У Java, конечно, были все характеристики, которые делали ее идеальным языком для Интернета. В 1994 году Sun Microsystems разработала веб-браузер HotJava. Это интегрирует среду исполнения Java, позволяющую вставлять в HTML-страницы небольшие Java-приложения: известные Java-апплеты. Netscape быстро интегрировал технологию Java в свой браузер, и к середине 1990-х годов Java получила огромную популярность, которая остается и по сей день [10]. Существуют множество сред разработки для Java, имеющие свои преимущества. Например: Eclipse, IntelliJ IDEA, Netbeans и другие. Первые три являются наиболее часто используемыми интегрированными средами разработки Java.

Рассмотрим код простой программы:

//комментарий

public class ABC {

public static void main (String args[]){

System.out.println("The chosen one!");

}

}

//коментарий

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

public class ABC

При определении класса вначале идет модификатор доступа public, который указывает, что данный класс будет доступен всем. Затем class – название класса (в нашем случае ABC)

{ и }

Фигурные скобки сигнализируют, что о начале и конце функции.

public static void main (String args[])

Класс может содержать различные переменные и методы. Здесь объявлен один метод main. Это главный метод в любой программе на Java, он является входной точкой программы и с него начинается все управление. String args[] - это массив args, который хранит значения типа String, то есть строки.

System.out.println("The chosen one!")

Для вывода на консоль используется встроенный метод System.out.println. В этот метод передается выводимая строка (в нашем случае строка «The chosen one!»)

Пройдем по основам языка программирования Java:

  1. В языке Java определены следующие основные типы данных:
  2. Boolean – хранит значение true (истина) или false (ложь).
  3. Int - хранит целое число от -2147483648 до 2147483647 и занимает 4 байта.
  4. Byte - хранит целое число от -128 до 127 и занимает 1 байт.
  5. Short - хранит целое число от -32768 до 32767 и занимает 2 байта.
  6. Long - хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт.
  7. Float – хранит число с плавающей точкой от 3.4E-38 до 3.4E+38 и занимает 4 байта.
  8. Double - хранит число с плавающей точкой от ±4.9*10-324 до ±1.8*10308 и занимает 8 байт.
  9. Char – хранит одиночный символ и занимает 2 байта.
  10. В языке программирования Java арифметические операции могут быть бинарными (производятся над двумя операндами) и унарными (выполняются над одним операндом). К бинарным операциям относят: +, -, *, /, % (получение остатка от деления).

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

  1. В языке программирования C++ существуют следующие операции отношения: == (равно), > (больше, чем), < (меньше, чем), <= (меньше или равно), >= (больше или равно), != (не равно), | (один из операндов или все операнды истинны), & (все операнды истинны), ! (если операнд ложен), ^ (один из операндов истинен), || (один из операндов или все операнды истинны), && (все операнды истинны).

Операции | и || (а также & и &&) выполняют похожие действия, однако же они не равнозначны. В выражении же c=a||b; вначале будет вычисляться значение a, и если оно равно true, то вычисление значения b уже смысла не имеет. В выражении же c=a&&b; сначала будет вычисляться значение a, и если оно равно false, то вычисление значения b уже не имеет смысла.

  1. В языке программирования Java имеются условные конструкции:
  2. If – проверяет истинность условий, если проверка успешна, то выполняется блок.
  3. Else – выполняется, если условия в if не выполняется.
  4. Else if – альтернативный вариант условий.
  5. Switch – сравнение выражения.
  6. Case – выполняется если выражение в switch найдено после данного оператора.
  7. ? – тернарный оператор, является сокращением для конструкций if else.
  8. В языке программирования Java для выполнения некоторых действий множество раз в зависимости от условий используются циклы:
  9. for (установка начальной условий, затем предоставляет условие при соблюдении которого выполняется цикл, затем изменение параметров цикла),
  10. do…while (сначала выполняется код цикла, а потом происходит проверка условия в инструкции),
  11. while (выполняется, пока условие истинно),
  12. break (прерывание цикла до его завершения),
  13. continue (переход к следующей итерации).
  14. В языке программирования Java существуют методы, которые содержат набор операторов, выполняющие определенные действия. Вызов метода: модификатор имя(аргументы). Одним из главных классов в Java содержит метод main. Модификаторы и параметры не обязательны.
  15. В языке программирования Java существуют, как и во всех объектно-ориентированных языках программирования, классы и объекты. Шаблоном или описанием объекта является класс, а объект представляет экземпляр этого класса. Любой объект может обладать двумя основными характеристиками: состояние - некоторые данные, которые хранит объект, и поведение - действия, которые может совершать объект. Также классы объединены в пакеты. Они позволяют организовать классы логически в наборы. По умолчанию Java уже имеет ряд встроенных пакетов, например, java.lang, java.util, java.io и другие. Организация классов в виде пакетов позволяет избежать конфликта имен между классами.
  16. В языке программирования Java присутствует обработка исключений. Одним из таких средств является конструкция try...catch. При возникновении исключения в блоке try управление переходит в блок catch, который может обработать данное исключение. Если такого блока не найдено, то пользователю отображается сообщение о необработанном исключении, а дальнейшее выполнение программы останавливается. При этом возможно обработать несколько исключений, добавляя дополнительные блоки catch. Другим оператором является оператор throw. С его помощью можно создать исключение самостоятельно и вызвать его в процессе выполнения.
  17. В языке программирования Java возможно выделить выражение в отдельную переменную и многократно возвращаться к ней. Оно называется лямбда-выражение. Его основу составляет лямбда-оператор, который представляет стрелку -> и состоит из двух частей: левая часть содержит список параметров выражения, а правая представляет тело лямбда-выражения, где выполняются все действия. Лямбда-выражение не выполняется само по себе, а образует реализацию метода. Одним из ключевых моментов в использовании лямбд является отложенное выполнение (deferred execution). Это значит, что необходимо определить в одном месте программы лямбда-выражение и затем вызывать его неограниченное количество раз в различных частях программы.

Как и начинающий программист, так и люди, далекие от программирования, путают Java и JavaScript, но их единственная сходство — это слово «Java». Каждый из них является языком программирования и у каждого есть свои преимущества перед другим. Программисты используют как Java, так и JavaScript для различных задач. JavaScript — это язык программирования («язык сценариев»), который используется для создания интерактивных веб-страниц. Он может вставлять динамический текст в HTML. Первоначально JavaScript был создан всего за несколько коротких недель, поэтому он был далек от идеального языка. При этом Брендан Эйх смог реализовать несколько основных концепций. Сначала он сделал функции переменными. В то время это было крайне редко в языках программирования. Во-вторых, он сделал JavaScript чрезвычайно расширяемым. В-третьих, как язык сценариев для Интернета, он был открытым, что действительно помогло сообществу открытого исходного кода процветать в Интернете.

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

2.3 Ruby

В середине 1990-х годов Юкихиро Мацумото не смог из существующих языков программирования найти подходящий и поэтому потратив несколько месяцев на написание был создан новый язык – Ruby. Он был разработан для продуктивности программистов с идеей, что программирование должно быть интересным для них. Это подчеркивает необходимость понимания программного обеспечения людьми в первую очередь, а компьютеров – вторыми [11]. Тщательно смешивая части языков Perl, Smalltalk, Lisp, Eiffel и Ada, Мацумото установил баланс между функциональным и императивным программированием. Ему удалось сделать Ruby не таким простым (на самом деле это очень сложный язык), а скорее естественным. Ruby очень быстро завоевал популярность в Японии. Вскоре после первого выпуска в 1995 году Matz (псевдоним Юкихиро Мацумото) был нанят японской консалтинговой группой по разработке программного обеспечения под названием Netlab (известная как Network Applied Communication Laboratory). К 2000 году, всего через пять лет после его выхода, Ruby стал более популярным в Японии, чем Python [12]. В 2001 году была выпущена первая английская книга по Ruby, «Programming Ruby» («The Pickaxe»). Благодаря этой новой информации о Ruby гораздо больше людей смогли выучить язык.

Рассмотрим код простой программы:

#комментарий

class XYZ

def f

puts “The chosen one!”

end

end

#комментарий

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

class XYZ

Создание класса, имя которого XYZ.

def f

Создание метод, имя которого f.

puts “The chosen one!”

Вывод строки на консоль. Команда puts позволяет вывести строку с последующим переходом на новую. Также существует похожая команда – print, но она выводит строку без последующего символа \n.

end

Ключевое слово при завершении метода def.

end

Ключевое слово при завершении класса XYZ.

Пройдем по основам языка программирования Ruby:

  1. В языке Ruby определены следующие основные типы данных:
  2. Boolean - хранит значение true (истина) или false (ложь).
  3. Fixnum – целочисленный тип до 230. Использует обычные арифметические команды процессора и ограничивает разрядность.
  4. Bignum - целочисленный тип более 230. Вычисляет с неограниченной точностью, доступной в оперативной памяти.
  5. Float – число с плавающей точкой.
  6. String – является классом и имеет большой выбор методов с манипуляцией сток.
  7. Symbols – неизменяемая строка. Записывается префиксом «:».
  8. Range – является классом и представляет непрерывную последовательность целых чисел от начального до конечного значения.
  9. В языке Ruby существуют бинарные операции (производятся над двумя операндами) и операции присваивания. К бинарным операциям относят: +, -, *, /, // (получение остатка от деления), ** (возведение в степень).

Операции присваивания позволяют присвоить результат операции первому операнду: += (сложение), -= (вычитание), *= (умножение), /= (деление), %= (остаток от деления), **= (возведение в степень).

  1. В языке программирования Ruby существуют следующие операции отношения: == (равно), > (больше, чем), < (меньше, чем), <= (меньше или равно), >= (больше или равно), != (не равно), <=> (комбинированный оператор сравнения. Возвращает 0, если первый операнд равен второму, 1, если первый операнд больше второго, и -1, если первый операнд меньше второго), === (используется в компоненте case при сравнении), equal? (проверяет переменные на один и тот же объект), eql? (проверяет переменные на принадлежность к одному классу и имеют ли они одинаковые значения).
  2. В языке программирования Ruby имеются условные конструкции:
  3. If – проверяет истинность условий, если проверка успешна, то выполняется блок.
  4. Else – выполняется, если условия в if не выполняется.
  5. Elsif - альтернативный вариант условий.
  6. Unless - проверяет ложность условий, если проверка успешна, то выполняется блок.
  7. Case - сравнивает выражение, заданное регистром, и выражение, указанное при использовании оператора «===», и выполняет код when.
  8. В языке программирования Ruby для выполнения некоторых действий множество раз в зависимости от условий используются циклы:
  9. while (выполняется, пока условие истинно),
  10. until (выполняется, пока условие ложно),
  11. for (выполняется код единожды для каждого элемента переменной),
  12. break (прерывание цикла до его завершения),
  13. next (переходит к следующей итерации внутреннего цикла),
  14. redo (перезапускает итерацию внутреннего цикла без проверки его состояния),
  15. retry (Ключевое слово retry позволяет повторить код в блоке. В сочетании с блоком rescue возможно использовать его для повторной попытки)
  16. В языке программирования Ruby существуют методы, использующиеся для объединения одного или нескольких повторяющихся операторов в один блок. Вызов метода def имя(параметры)…end. Методы должны быть определены до их вызова, иначе Ruby вызовет исключение для вызова неопределенного метода. Имена методов должны начинаться со строчной буквы. Если имя метода начнется с заглавной буквы, Ruby может подумать, что это константа и, следовательно, может неправильно анализировать метод. Самым распространенным является метод преобразования типов: to_i (преобразование в целочисленное число), to_f (преобразование в число с плавающей точкой), to_s (преобразование в строку), to_a (преобразование в массив).
  17. Язык программирования Ruby — это объектно-ориентированный язык. Каждое значение в Ruby — это объект, даже самые примитивные вещи: строки, числа и даже true и false. Даже сам класс является объектом, который является экземпляром класса Class. Класс используется для определения формы объекта, и он объединяет представление данных и методы для манипулирования этими данными в одну форму. Данные и методы в классе называются членами класса.
  18. В языке программирования Ruby существует способ группировки методов, классов и констант. Модули определяют пространство имен, «песочницу», в которой ваши методы и константы могут воспроизводиться, не беспокоясь о том, что на них будут воздействовать другие методы и константы. Вызов модуля: module имя_модуля…end. Если другая программа хочет использовать какой-либо определенный модуль, она может просто загрузить файлы модуля, используя оператор require (require имя_файла). Также можно встроить модуль в класс, использую оператор include (include имя_модуля). Если модуль определен в отдельном файле, то перед включением модуля в класс требуется включить этот файл с помощью оператора require.
  19. В языке программирования Ruby присутствует обработка исключений. Программа останавливается, если возникает исключение. Таким образом, исключения используются для обработки ошибок различного типа, которые могут возникнуть во время выполнения программы и предпринять соответствующие действия вместо полной остановки программы. Основные конструкции:
  20. begin…rescue…end - все от begin до rescue защищено. Если во время выполнения этого блока кода возникает исключение, управление передается в блок между rescue и end.
  21. retry - возможно перехватить исключение, используя блок rescue, а затем использовать оператор retry для запуска блока begin с начала.
  22. raise - возможно использовать оператор raise для принудительного вызова исключения.
  23. ensure - иногда нужно гарантировать, что некоторая обработка выполняется в конце блока кода, независимо от того, было ли вызвано исключение. Ensure идет после последнего rescue и содержит кусок кода, который всегда будет выполняться при завершении блока.
  24. else - если присутствует условие else, оно идет после блока rescue и перед ensure.
  25. catch and throw - несмотря на то, что механизм исключений raise и rescue отлично подходит для отказа от выполнения, когда что-то идет не так, иногда нужно иметь возможность выпрыгнуть из глубоко вложенной конструкции во время обычной обработки. Catch определяет блок, который помечен данным именем (это может быть Symbol или String). Блок выполняется нормально, пока не встретится throw.

Спустя 10 лет после выхода Ruby в открытый доступ Давид Хейнемейер Ханссон в 2004 году, во время работы над Basecamp для 37signals, представил фреймворк с открытым исходным кодом – Ruby on Rails. Он является основой для многих популярных веб-приложений и для веб-разработки. Веб-приложение — это особая программа, которая запускается на удаленном компьютере (веб-сервер). Это приложение, которое принимает запросы через http, как правило, от пользователей в веб-браузерах, и отвечает HTML или другим форматом данных. Такого рода программы также могут быть написаны на Ruby, но написание полнофункционального веб-приложения с нуля на Ruby является сложной задачей. Для таких целей и используется Ruby on Rails. Ruby on Rails - это набор инструментов и абстракций (в основном в форме модулей и классов), которые облегчают написание веб-приложений и упрощают их обслуживание. Он также позволяет упростить направление запросов на конкретные действия; генерировать схемы базы данных; организовывать и предоставлять ресурсы JavaScript, CSS; выполнять автоматизированные тесты; писать HTML-шаблоны с помощниками форматирования и разметки; писать более мощный, выразительный и читаемый код; проверять объекты данных и многое другое.

Ruby — это язык программирования высокого уровня, привлекший к себе немалую аудиторию. Разработанный в 1995 году как объектно-ориентированный язык программирования из не менее популярных на то время Lisp, Perl и Ada, Юкихиро Мацумото уделил особое внимание попыткам сделать Ruby естественным, не только простым. Интерпретируемый как Perl и Python и объектно-ориентированный как Java и Ada, Ruby удается создать идеальный баланс между производительностью и простотой.

2.4 Python

В начале 1980-х Гвидо Ван Россум работал в CWI (Centrum voor Wiskunde en Informatica) в качестве разработчика языка программирования ABC. Позже в CWI, в конце 1980-х, работая над новой операционной системой под названием AMOEBA, Гвидо Ван Россум начал искать язык сценариев с синтаксисом, подобным ABC, но с доступом к системным вызовам AMOEBA. Поэтому сам Гвидо Ван Россум начал разрабатывать новый простой язык сценариев, который мог бы преодолеть недостатки ABC [13]. Гвидо Ван Россум начал разработку нового языка в конце 1980-х и, наконец, представил первую версию этого языка программирования в 1991 году. В первоначальном варианте имеется модульная система Modula-3. Позже этот язык программирования получил название «Python». Часто люди предполагают, что название «Python» происходит от змеи питона. Даже логотип языка программирования Python изображает изображение двух змей, синего и желтого цвета. Но история именования несколько иная. Еще в 1970-х годах было популярное комедийное телешоу BBC под названием «Летающий цирк Монти Пайтона» («Monty Python's Flying Circus»), и Ван Россум был его большим поклонником. В честь этого и был назван язык программирования Python [14].

Ван Россум был «Великодушным пожизненным диктатором» (Benevolent Dictator For Life, или BDFL), что означало основателя проекта, который сохраняет за собой право принимать окончательные решения. Но 2018 году Ван Россум ушел с поста лидера. Некоторое время он работал в Google, но в настоящее время он работает в Dropbox. Его основной целью было обеспечить читабельность кода и повысить производительность труда разработчиков.

Конечно, Python, как и другие языки, прошел через несколько версий. Python 0.9.0 был впервые выпущен в 1991 году. Помимо обработки исключений, Python включал в себя классы, списки и строки. Что еще более важно, он включал лямбда-выражения, функции map, filter, reduce. В 2000 году был выпущен Python 2.0. Эта версия была скорее проектом с открытым исходным кодом от членов Национального исследовательского института математики и компьютерных наук. Эта версия Python включала в себя включение в список, полный сборщик мусора и поддерживала Unicode. Следующая версия Python 3.0 была выпущена в декабре 2008 года (последняя версия Python - 3.8.1). Хотя Python 2 и 3 похожи, есть небольшие различия.

Рассмотрим код простой программы:

#комментарий

class Object:

name = "The chosen one!"

def twenty_three(self):

print(self.name)

o = Object()

o.twenty_three()

input()

#комментарий

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

class Object:

Создание класса, имя которого Object.

name = "The chosen one!"

Присваивание переменной текстового значения "The chosen one!".

def twenty_three(self):

Создание метода, имя которого twenty_three. Принимает ссылку на текущий параметр.

print(self.name)

Вывод на консоль переменной name.

o = Object()

Создание экземпляра класса.

o.twenty_three(name)

Вызов метода через экземпляр класса.

input()

Функция ввода данных с клавиатуры и ожидание нажатия клавиши ENTER.

Пройдем по основам языка программирования Python:

  1. В языке Python определены следующие основные типы данных:
  2. Boolean – логическое значение. Хранит true (истина) или false (ложь).
  3. Int – целое число.
  4. Float – число с плавающей точкой.
  5. Complex – комплексные числа.
  6. Str – строки. В Python 3 является набором символов в Unicode
  7. Bytes – последовательность чисел в диапазоне от 0 до 255.
  8. List – список (массив).
  9. Tuple – кортеж. Отличие от списков – защита от изменений, меньший размер.
  10. Set – множество, содержит не повторяющиеся элементы в случайном порядке, которые возможно изменить.
  11. Frozen set – множество, содержит не повторяющиеся элементы в случайном порядке, которые невозможно изменить.
  12. Dict – словарь, где каждый элемент имеет ключ и значение.
  13. В языке Ruby существуют бинарные операции (производятся над двумя операндами) и операции присваивания. К бинарным операциям относят: +, -, *, /, // (целочисленное деление), % (получение остатка от деления), ** (возведение в степень).

Операции присваивания позволяют присвоить результат операции первому операнду: += (сложение), -= (вычитание), *= (умножение), /= (деление), //= (целочисленное деление), %= (получение остатка от деления), **= (возведение в степень).

  1. В языке программирования Ruby существуют следующие операции отношения: == (равно), > (больше, чем), < (меньше, чем), <= (меньше или равно), >= (больше или равно), != (не равно). Также присутствуют логические операции: and (если оба выражения истины), or (если одно выражение истинно), not (если выражение ложно).
  2. В языке программирования Python имеются условные конструкции:
  3. If – проверяет истинность условий, если проверка успешна, то выполняется блок. Конструкция if в свою очередь сама может иметь вложенные конструкции if.
  4. Else – выполняется, если условия в if не выполняется.
  5. Elif - альтернативный вариант условий.
  6. В языке программирования Python для выполнения некоторых действий множество раз в зависимости от условий используются циклы:
  7. while (выполняется, пока условие истинно),
  8. for…in… (выполняется код единожды для каждого элемента переменной). Часто используется с функцией range(). Одни циклы внутри себя могут содержать другие циклы.
  9. break (прерывание цикла до его завершения),
  10. continue (переход к следующей итерации).
  11. В языке программирования Python можно создавать методы (функции), которые выполняют определенную задачу и которые можно повторно использовать в других частях программы. Вызов функции: def имя(параметры). Некоторые параметры функции можно сделать необязательными, указав для них значения по умолчанию. С помощью символа звездочки перед параметром можно определить неопределенное количество значений. Функция может возвращать результат с помощью оператора return.

В Python есть два типа контекста: глобальный и локальный. Глобальный контекст подразумевает, что переменная доступна вне функции для всей программы (global имя_переменной). Локальные переменные определены в функции и операции с ней проводятся только в ней.

  1. В языке программирования Python для использования определенного кода в других программах возможно создавать модули. Для этого необходимо создать файл с заготовленным кодом с расширением .py. Название файла и будет являться названием модуля. Для его использования надо импортировать с помощью оператора import.

По умолчанию при импорте модуля он доступен через одноименное пространство имен. Однако его можно переопределить – import имя_модуля as имя_1. Еще один вариант предлагает импорт функциональности модуля в глобальное пространство имен текущего модуля с помощью ключевого слова from (from имя_модуля import функция_модуля). Python имеет обширную библиотеку встроенных модулей (random, math, re, collections, sys, os и другие).

  1. Python поддерживает объектно-ориентированное программирование, то есть некоторые компоненты программы можно определить в виде классов. Класс является шаблоном или формальным описанием объекта, а объект представляет экземпляр этого класса. Класс определяется с помощью ключевого слова class. переменные класса называют атрибутами.
  2. В языке программирования Python присутствует обработка исключений. Программа останавливается, если возникает исключение. Таким образом, исключения используются для обработки ошибок различного типа, которые могут возникнуть во время выполнения программы и предпринять соответствующие действия вместо полной остановки программы. Основные конструкции:
  3. try…except - весь основной код, в котором потенциально может возникнуть исключение, помещается после блока try и если в этом коде генерируется исключение, то работа кода, и выполнение переходит в блок except.
  4. finally – блок кода выполняется вне зависимости было ли сгенерировано исключение.
  5. raise - возможно использовать оператор raise для принудительного вызова исключения.
  6. as - можно передать всю информацию об исключении в переменную и затем использовать в блоке except.
  7. Python поддерживает множество различных типов файлов, с которыми можно взаимодействовать (cvs, txt, html). Последовательность методов работы с файлами: 1. open() – открытие файла; 2. read()/write() – чтение/запись; 3. close() – закрытие файла. Однако есть и более удобная конструкция – with (определяет для открытого файла переменную и выполняет набор инструкций, после автоматически закрывается).

Python является одним из самых популярных языков программирования высокого уровня. Его используют крупные корпорации как Google, Dropbox, Reddit, Spotify, Netflix и многие другие. Python — это ясный и лаконичный язык с превосходной встроенной стандартной библиотекой. Во многом благодаря PEP8 (руководство по написанию кода на Python) код Python, как правило, может быть достаточно последовательным независимо от того, кто его написал.

ЗАКЛЮЧЕНИЕ

В данной курсовой работе было проведено исследование на тему «Обзор языков программирования высокого уровня».

В первой главе была описана информация о понятиях компьютерных языков программирования, история и развитие от первоначальных языков (ассемблер, FORTRAN, Cobol, Ada и другие) до современных (C++, Java, Ruby, Python и другие), достоинства и недостатки тех или иных языков программирования, их назначение и функции.

Были рассмотрены языки, имеющие корни 50-х годов 20 века, их «эволюция» и наследование. Несмотря на возраст, они продолжают поддерживаться разработчиками, адаптироваться под современные системы, выпускать новые версии и приспосабливаться под новые интегрированные среды разработки. Эти языки серьезно повлияли на современные концепции написания программ и их влияние можно заметить в нынешних языках программирования.

Во второй главе проводился обзор языков программирования высокого уровня. Для рассмотрения были выбраны популярные на сегодняшний день языки программирования – C++, Java, Ruby, Python. Созданные относительно недавно, они задали новый курс развития данного направления. Каждый из них является уникальным языком и имеет свои достоинства и недостатки, все они разрабатывались под определённые цели и обладают огромной поддержкой как со стороны разработчика, так и с пользователей.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Гавриков, М. М. Теоретические основы разработки и реализации языков программирования / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. - М.: КноРус, 2010. - 184 c.
  2. Голицына, О. Л. Языки программирования / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: Форум, 2010. - 400 c.
  3. Финогенов, К. Г. Использование языка Ассемблера. Учебное пособие / К.Г. Финогенов. - М.: Горячая линия - Телеком, 2004. - 440 c.
  4. Лавров С. С. Основные понятия и конструкции языков программирования. — Финансы и статистика, 1982. — 80 с.
  5. Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001. — 276 с.
  6. Ф. Бьянкуцци, Ш. Уорден. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования. — СПб.: Символ-Плюс, 2010. — 608 с.
  7. Бьёрн Страуструп. Дизайн и эволюция C++ = The Design and Evolution of C++. — СПб.: Питер, 2007. — 445 с.
  8. Скотт Мейерс. Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14 = Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 / Пер. с англ. — Вильямс, 2016. — 304 с.
  9. Джеймс Гослинг, Билл Джой, Гай Стил, Гилад Брача, Алекс Бакли. Язык программирования Java SE 8. Подробное описание, 5-е издание = The Java Language Specification, Java SE 8 Edition (5th Edition) (Java Series). — М.: «Вильямс», 2015. — 672 с.
  10. Монахов Вадим. Язык программирования Java и среда NetBeans. — 3-е изд. — СПб.: БХВ-Петербург, 2011. — 704 с.
  11. Х. Фултон. Программирование на языке Ruby = The Ruby Way / пер. с англ. А. Слинкин. — 2-е изд. — М.: ДМК Пресс, 2007. — 688 с. 
  12. М. Фитцджеральд. Изучаем Ruby = Learning Ruby / пер. с англ. Н. Гаврилова. — 1-е изд. — СПб.: БХВ-Петербург, 2008. — 336 с. 
  13. Марк Лутц. Программирование на Python / Пер. с англ. — 4-е изд. — СПб.: Символ-Плюс, 2011. — Т. I. — 992 с.
  14. Маккинли У. Python и анализ данных. — Перевод с английского. — М.: ДМК Пресс, 2015. — 482 с.