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

Объявление

Наш баннер

Сайт Обучонок содержит исследовательские работы и проекты учащихся, темы творческих проектов по предметам и правила их оформления, обучающие программы для детей.
Будем благодарны, если установите наш баннер!
Баннер сайта Обучонок
Код баннера:
<a href="https://obuchonok.ru/" target="_blank"> <img src="https://obuchonok.ru/banners/banob2.gif" width="88" height="31" alt="Обучонок. Исследовательские работы и проекты учащихся"></a>
Все баннеры...
Тематика: 
Информатика
Автор работы: 
Венедиктов Матвей Андреевич
Руководитель проекта: 
Маслова Татьяна Викторовна
Учреждение: 
Муниципальное бюджетное общеобразовательное учреждение "Гимназия имени Подольских курсантов"
Класс: 
9

В процессе исследовательской работы по информатике "Языки программирования, этапы развития и их разновидности. Разработка игры с помощью Python" учеником 9 класса были поставлены и реализованы следующие цели: познакомиться с началом развития программирования, с первыми языками; узнать какие языки на данный момент являются самыми актуальными; создать компьютерную игру с помощью языка программирования.

Подробнее о проекте:


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

Оглавление

Введение
Глава 1. История развития языков программирования
1.1 Общие сведения о языках программирования
1.2 История языков программирования: хронология
Глава 2. Программирование в современном мире
2.1. Самые популярные языки программирования в 2022 г.
1.Python
2.JavaScript
3.Java
4.C/C++
5.PHP
6.Swift
7.Goland (Go)
8.C#
9.Ruby
10.Kotlin
2.2 Рейтинг языков программирования 2022-2023 гг
2.3 Наиболее популярные сферы использования языков программирования
2.4 Создание игры с помощью языка программирования Python
Заключение
Список литературы

Введение


Информационные технологии являются одной из наиболее быстро развивающихся областей и занимают очень важное место в современном мире. Невозможно представить, рабочее место любого специалиста без компьютера, который является незаменимым для социальной сферы, средством повышения эффективности процесса обучения, участвует во всех видах человеческой деятельности, и чтобы это обеспечить, создается большое количество программного обеспечения с помощью языков программирования. Программирование – это сама основа цифровой эпохи, в которой мы живем сегодня. Каждый раз, когда вам нравится публикация в социальных сетях, вы отправляете электронное письмо или устанавливаете будильник на своем телефоне, язык программирования работает за кулисами, дергая за ниточки. Языки программирования представляют набор формальных правил, на основе которых пишут программы. Если обычный язык, например, русский или английский, используется для общения людей друг с другом, язык программирования позволяет человеку «общаться» с компьютером, объясняя ему, какие нужно выполнить задачи.

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

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

Цели исследования:

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

Создать компьютерную игру с помощью языка программирования.

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

  1. Исследовать историю создания языков программирования.
  2. Сделать обзор современных языков программирования.
  3. Показать создание игры с помощью языка программирования Python.

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

Глава 1. История развития языков программирования

1.1 Общие сведения о языках программирования

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

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

Но с чего все началось? И что стимулировало его рост в ведущую отрасль, существующую сегодня?

Первые программисты появились задолго до компьютеров, с которыми они обычно ассоциируются. Автомат-гуманоид Аль-Джазари (1206 год), ткацкий станок Жаккара (1804), «Аналитическая машина» Бэббиджа (1843) были программируемыми устройствами. Автомату алгоритм действий задавался с помощью кулачков и зажимов, станку и "разностной машине" - с помощью перфокарт. Ада Августа Лавлейс, дочь самого Байрона, даже написала для устройства Бэбиджа (которое он так и не собрал) программу, решавшую уравнение Бернулли. Первый в истории машинный алгоритм она записала на листе бумаги, потому что в то время компьютеров не существовало.

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

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

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

Примеры таких языков: FORTRAN (FORmula TRANslator; 1954) предназначен для научных и технических расчетов; СOBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – Сommon Business-Oriented Language); язык BASIС (Beginner’s All Purpose Instuсtion Сode – универсальный язык символьных инструкций для начинающих; 1964)

Алгоритмические языки программирования. С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора цикла). К этим языкам относятся: язык Pasсal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970); язык Си, позволяющий быстро и эффективно создавать программный код (1971)

Языки объектно-ориентированного программирования (90-е г. XX в.). В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны среды программирования, позволяющие визуально конструировать графический интерфейс приложений: Ada, Java, C++, C#, Python, R, PHP, Visual Basic.NET, JavaScript, Ruby, Perl, SIMSCRIPT, Object Pascal, Objective-C, Dart, Swift, Scala, Kotlin, Common Lisp, MATLAB и Smalltalk.

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

1.2 История языков программирования: хронология

1843 г. – Машинный алгоритм Ады Лавлейс. Ада Лавлейс изобретает первый в истории машинный алгоритм для разностной машины Чарльза Бэббиджа, который закладывает основу для всех языков программирования. 1944-1945 гг. – Планкалкюль. Где-то между 1944-45 годами Конрад Цузе разработал первый «настоящий» язык программирования под названием Plankalkül (Расчет плана). Язык Zeus (помимо прочего) позволял создавать процедуры, в которых хранятся фрагменты кода, которые можно было вызывать снова и снова для выполнения рутинных операций. 1949 г. – Язык Ассемблера. Ассемблер использовался в автоматическом калькуляторе с электронным запоминанием задержки (EDSAC). Ассемблер был разновидностью низкоуровневого языка программирования, который упростил язык машинного кода. Другими словами, конкретные инструкции, необходимые для работы с компьютером. Является наиболее популярным низкоуровневым языком. Некоторые его преимущества настолько очевидны, что даже в сложных программах, написанных на высокоуровневых языках, часто применяют вставки на Ассемблере.

1949 г. – Shortcode. Шорткод (или сокращенный код) был первым языком высокого уровня (HLL), предложенным Джоном Макколи в 1949 году. Однако именно Уильям Шмитт реализовал его для компьютера BINAC в том же году и для UNIVAC в 1950 году.

1952 г. – Автокодирование. Автокод был общим термином, используемым для семейства языков программирования. Autocode, впервые разработанный Аликом Гленни для компьютера Mark 1 в Университете Манчестера, был первым в истории скомпилированным языком, который был реализован, что означает, что он может быть переведен непосредственно в машинный код с помощью программы, называемой компилятором. Автокод использовался на первых вычислительных машинах Ferranti Pegasus и Sirius в дополнение к Mark1.

1957 г. – Fortran. FORmula TRANslation или FORTRAN был создан Джоном Бэкусом и считается старейшим языком программирования, используемым сегодня. Язык программирования был создан для научных, математических и статистических вычислений высокого уровня. FORTRAN до сих пор используется в некоторых из самых передовых суперкомпьютеров в мире.

1958 г. – ALGOL (Алгоритмический язык). Алгоритмический язык или АЛГОЛ был создан совместным комитетом американских и европейских компьютерных ученых. Алгол послужил отправной точкой для разработки некоторых из наиболее важных языков программирования, включая Pascal, C, C ++ и Java.


1958 г. – LISP (обработчик списков). Процессор списков или LISP был изобретен Джоном Маккарти в Массачусетском технологическом институте (MIT). Первоначально предназначенный для искусственного интеллекта, LISP является одним из старейших языков программирования, которые все еще используются сегодня, и его можно использовать вместо Ruby или Python. Такие компании, как Acceleration, Boeing и Genworks, по-прежнему используют LISP в своих технических стеках.

1959 г. – КОБОЛ (Общий бизнес-ориентированный язык). Общий бизнес-ориентированный язык (COBOL) – это язык программирования, лежащий в основе многих процессоров кредитных карт, банкоматов, телефонных и сотовых вызовов, сигналов больниц и систем сигналов светофора (и это лишь некоторые из них). Разработкой языка руководила доктор Грейс Мюррей Хоппер, и он был разработан таким образом, чтобы его можно было использовать на компьютерах всех марок и типов. COBOL до сих пор используется в первую очередь для банковских систем.

1964г. – BASIC (универсальный символьный код инструкций для начинающих). Универсальный код символических инструкций для начинающих или BASIC был разработан группой студентов Дартмутского колледжа. Этот язык был написан для студентов, которые плохо разбирались в математике или компьютерах. Этот язык был разработан основателями Microsoft Биллом Гейтсом и Полом Алленом и стал первым товарным продуктом компании.

1964-1967 г. – Simula, Simula-67 (первый объектно-ориентированный язык программирования). Разработан в 1967 году в Норвежском Вычислительном Центре тремя учёными – Оле-Йоханом Далем, Бьорном Мирхаугом и Кристен Нигаард. Первый язык программирования с классами и объектами, незаслуженно почти забытый, но из которого выросло современное объектно-ориентированное программирование в том виде, в котором оно присутствует в нашем коде. Это язык для имитационного моделирования реальности. Разработчики новых языков программирования «оглядывались» на Simula при добавлении механизмов объектно-ориентированного программирования в свой язык. Язык распространяется в 70-х годах прошлого столетия, но затем его известность угасает. Причин такого падения популярности перечисляют несколько, но говоря современным языком — недостаток маркетинга (медленно развивающийся продукт, цена, слабый PR)

1970 г. – ПАСКАЛЬ, назван в честь французского математика Блеза Паскаля, Никлаус Вирт разработал язык программирования в его честь. Он был разработан как средство обучения компьютерному программированию, что означало, что его легко освоить. Apple предпочитала его на заре своей деятельности из-за простоты использования и мощности.

1972 г. – Си, создан Денисом Ритчи в начале 70-х годов в Bell Laboratory американской корпорации AT&T, является одним из универсальных языков программирования. Язык Си считается языком системного программирования, хотя он удобен и для написания прикладных программ. Среди преимуществ языка Си следует отметить переносимость программ на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичность записи алгоритмов, логическую стройность программ, а также возможность получить программный код, сравнимый по скорости выполнения с программами, написанными на языке ассемблера. Последнее связано с тем, что хотя Си является языком высокого уровня, имеющим полный набор конструкций структурного программирования, он также обладает набором низкоуровневых средств, обеспечивающих доступ к аппаратным средствам компьютера. С 1989 года язык Си регламентируется стандартом Американского института национальных стандартов ANSI С. В настоящее время, кроме стандарта ANSI C разработан международный стандарт ISO C (International Standard Organization C).

1972 г. – Smalltalk, разработан в Xerox PARC Аланом Кэйем, Дэном Ингаллсом, Тедом Кэглером, Адель Голдберг, и другими в 1970-х годах. Язык был представлен как Smalltalk-80 и с тех пор широко используется. Smalltalk продолжает активно развиваться и собирает вокруг себя преданное сообщество пользователей. Smalltalk был первым объектно-ориентированный язык программирования, который стал популярным. Первоначально он был использован для создания прототипов простых языков программирования и графических интерфейсов, которые так популярны сегодня.

1973 г. – ML, был разработан Робином Мионером (Награда Тьюринга, 1991 г.). Это был первый язык, в котором вместе с типобезопасным механизмом

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

1980 г. – Ada, cозданный в ходе проекта Министерства обороны США с целью разработать единый язык программирования для встроенных систем (то есть систем управления автоматизированными комплексами, функционирующими в реальном времени). Имелись в виду прежде всего бортовые системы управления военными объектами (кораблями, самолётами, танками, ракетами, снарядами и т. п.). Перед разработчиками не стояло задачи создать универсальный язык, поэтому решения, принятые авторами Ады, нужно воспринимать в контексте особенностей выбранной предметной области. Язык назван в честь Ады Лавлейс.

1983 г. – С++ - создатель сотрудник фирмы Bell Laboratories – Бьёрн Страуструп. Он придумал ряд усовершенствований к языку программирования C, для собственных нужд. Т. е. изначально не планировалось создания языка программирования С++. Ранние версии языка С++, известные под именем «Cи с классами», начали появляться с 1980 года. Страуструп добавил к нему возможность работы с классами и объектами, тем самым зародил предпосылки нового, основанного на синтаксисе С, языка программирования. Синтаксис C++ был основан на синтаксисе C, так как Бьёрн Страуструп стремился сохранить совместимость с языком C. Язык стал невероятно популярен. К 1983 году в него были добавлены различные константы, виртуальные функции, ссылки, перегрузка функций и операторов, контроль пользователя над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев.


1987 г. – Perl, создан американским программистом с лингвистическим образованием — Ларри Уоллом. Высокоуровневый интерпретируемый динамический язык программированияобщего назначения. Изначально он был предназначен для работы с текстом, но сейчас используется для решения широкого круга задач, включая администрирование, web-разработку, сетевое программирование, разработку графических пользовательских интерфейсов. Его основными достоинствами являются простота использования, встроенная обработка текстовых данных и наличие одной из самых впечатляющих коллекций сторонних библиотек.

1991 г. – HTML (HyperText Markup Language – язык гипертекстовой разметки документов) разработан британским учёным Тимом Бернерсом-Ли в Швейцарии HTML. Создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. Он нужен, чтобы размещать на веб-странице элементы: текст, картинки, таблицы и видео. Благодаря языку HTML-страницы и приложения в интернете имеют упорядоченный вид с четким расположением заголовков, разделов, параграфов и ссылок. Стоит понимать, что HTML — это не язык программирования, и для создания динамических функций он не предназначен. Его функция – структурировать документы по аналогии с Microsoft Word.

1991 г. – Python, создателем языка является Гвидо ван Россум, это интерпретируемый язык программирования высокого уровня с динамической типизацией. Язык поддерживает различные виды программирования: императивное (исходный код основанный на командах выполняющиеся последовательно), процедурное (деление программ на подпрограммы), структурное (представление программы в виде структуры блоков инструкций), объектно-ориентированное (основанное на типах), метапрограммирование (написание программ, которые управляют другими программами) и функциональное (вычисления трактуются как значения функций). Python часто изучается и рекомендуется как первый язык программирования. Простота синтаксиса Python обеспечивает высокую производительность при написании кода. Использование интерпретатора упрощает тестирование и отладку программ. Python также помогает понять основные концепции объектно-ориентированного программирования.

1993 г. – Ruby, был разработан Юкихиро "Мацем"; Мацумото в Японии –это интерпретируемый язык программирования общего назначения высокого уровня, который поддерживает несколько парадигм программирования. Он был разработан с упором на производительность и простоту программирования. Ruby динамически типизируется и использует сборку мусора и компиляцию точно в срок, он поддерживает несколько парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование. По словам создателя, на Ruby оказали влияние Perl, Smalltalk, Ada, BASIC, Java и Lisp.

1995 г. – Java – объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Java позволяет разработчикам приложений «написав однажды, запускать везде». Это означает, что скомпилированный Java-код может быть запущен на всех платформах, которые поддерживают Java, без необходимости в перекомпиляции. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.

1995 г. – PHP, как всем известно, на самом деле преемник продукта под названием PHP/FI. Созданное в 1994 году Расмусом Лердорфом, самое первое воплощение PHP было простым набором CGI-скриптов, написанных на языке программирования Си. Изначально используя их для отслеживания посещений своего веб-резюме, он назвал этот набор скриптов "Personal Homepages Tools" ("Инструменты для персональных домашних страниц"), но более часто упоминалось название "Php Tools". C-подобный скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов.

1995 г. – JavaScript – это то, что делает живыми веб-страницы, которые мы каждый день просматриваем в своем веб- браузере. JavaScript был создан в 1995 году в компании Netscape разработчиком Брендоном Айком (Brendon Eich) в качестве языка сценариев в браузере Netscape Navigator 2. Первоначально язык назывался LiveScript, но на волне популярности в тот момент другого языка Java LiveScript был переименован в JavaScript.

2000 г. – С# (произносится си шарп) - объектно-ориентированный язык программирования общего назначения. Разработан в 1998-2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений для платформы Microsoft .NET Framework и .NET Core. Впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

2003 г. – Scala – мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения, сочетающий возможности функционального и объектно-ориентированного программирования. Первые версии языка созданы в 2003 году коллективом лаборатории методов программирования Федеральной политехнической школы Лозанны под руководством Мартина Одерски, язык реализован для платформ Java и JavaScript.

2010-2014 гг. – Swift – это универсальный многопарадигмальный компилируемый язык программирования, разработанный компанией Apple Inc. и сообществом разработчиков с открытым исходным кодом. Крис Латтнер начал разработку Swift в 2010 и закончил работу уже вместе с сотрудниками Apple. Примечательно, что этот язык не имеет как такового одного «родителя». Вместо этого, создатели Swift взяли понемногу от разных языков, например, Object-C, Haskell, Python, C#, CLU и ряда других. Согласно заявлениям официальных представителей, Swift был заложен в платформе NeXT, которая выпускалась в начале 90-х годов прошлого столетия. Именно эта платформа и стала прародительницей современный iOS и macOS. Язык программирования Swift является одним из самых молодых на сегодня. С учетом того, что Свифт разработан не так давно, в нем учтены многие минусы, которые свойственным более древним языкам программирования. В итоге Swift получился настолько качественным, что его можно назвать одним из самых перспективных языков программирования. Наряду со многими его достоинствами можно назвать и то, что он не слишком сложен для изучения. А потому даже начинающие разработчики могут освоить его без особых проблем.

Глава 2. Программирование в современном мире

2.1 Самые популярные языки программирования в 2022 г.

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

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

1. Python

венедиктов1

Уровень: начальный. Необходимые навыки:высокая самообучаемость, развитое аналитическое и абстрактное мышление.

Области применения: веб-разработка, десктопные графические интерфейсы, бизнес-приложения, машинное обучение (ML) и глубокое обучение (DL), наука о данных (Data science), искусственный интеллект (AI), игры, микроконтроллеры, анализ и визуализация данных.

Плюсы:

  • Повышенная производительность.
  • Интуитивно простое чтение и написание.
  • Развитая официальная документация и учебные пособия.
  • Динамическая типизация — компиляция скриптов происходит непосредственно во время выполнения.
  • Интерпретируемый язык выполняет код построчно и сообщает об ошибках последовательно, что упрощает отладку.
  • Простая интеграция с веб-службами.
  • Обширная нативная библиотека и упрощенный экспорт со встроенным диспетчером пакетов Python (pip).
  • Может масштабировать даже самые сложные приложения.
  • Идеально подходит для создания прототипов и быстрого тестирования идей.

Минусы:

  • Низкая скорость. Построчное выполнение кода часто приводит к его медленному выполнению.
  • Большая нагрузка на память. Производительность Python требует компромисса — повышенного потребления системных ресурсов.
  • Из-за повышенного потребления памяти и низкой скорости, не подходит для разработки мобильных и фронтэнд приложений.
  • Плохо развитое взаимодействие с базами данных.
  • Возможны ошибки выполнения (Runtime Error), связанные с динамическим изменением типа данных переменной. Из-за этого код на Python требует более тщательного тестирования.
  • Не поддерживает многопоточность из-за встроенного механизма глобальной блокировки интерпретатора (GIL, Global Interpreter Lock)

Пример синтаксиса:

print("Hello World!")

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

Python используется для разработки пакетов 2D-изображений и 3D-анимации, таких, как Blender, Inkscape и Autodesk. Он также применялся для разработки ряда высокобюджетных видеоигр, включая Civilization IV, Vegas Trike и Toontown. На Python написаны многие научные и вычислительные приложения, такие как FreeCAD и Abacus, а также такие популярные веб-сайты, как YouTube, Quora, Pinterest и Instagram.

2. JavaScript

венедиктов2

Уровень: от начального до среднего.

Необходимые навыки:основы HTML и CSS для определения содержимого и макета веб-страниц.

Области применения: фронтэнд, бэкэнд (Node.js), мобильные приложения (React Native), игры.

Плюсы:

  • Язык прост в освоении и реализации.
  • Широкая сфера применения.
  • Быстрота — не требует компиляции и может работать сразу в браузере на стороне клиента.
  • Снижает нагрузку на сервер веб-сайта, так как работает на стороне клиента.
  • Регулярные обновления через спецификацию ECMAScript (ES).
  • Много полезных дополнений для расширения функциональности и кастомизации (например, Greasemonkey).
  • Много ресурсов и отличная поддержка сообщества.
  • Хорошая совместимость с другими языками программирования.

Минусы:

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

Пример синтаксиса:
console.log("Hello World!");

JavaScript или JS неслучайно долгие годы удерживал звание титул наиболее популярного языка программирования в мире. Этот высокоуровневый язык разработки стал одной из главных технологий, лежащих в основе работы Всемирной паутины. Сегодня JS и другие языки на спецификации ES (например, ActionScript и TypeScript) используют в качестве клиентского языка программирования более 90 % всех веб-сайтов Интернета. Основная специализация JavaScript — фронтэнд. Этот язык программирования востребован в разработке интерактивных интерфейсных приложений, например, всплывающих окон. Однако JS универсален и вполне может претендовать на роль языка фулстек-разработки. Он одинаково эффективен для создания как серверных, так и клиентских скриптов.

Сегодня многие разработчики работают с NodeJS — средой выполнения на основе JavaScript, которая позволяет использовать JS для запуска сценариев на стороне сервера. Например, для создания динамического содержимого веб-страницы до того, как страница будет отправлена в веб-браузер пользователя.

3. Java

венедиктов3

Уровень: средний. Необходимые навыки: комплексный подход к решению проблем, знание объектно-ориентированной структуры.

Области применения: мобильная разработка (Android), кроссплатформенное ПО для настольных ПК, геймдев.

Плюсы:

  • Независимость от платформы (благодаря функции JVM) и объектно-ориентированное программирование.
  • Повышенная производительность и надежность.
  • Изобилие библиотек с открытым исходным кодом.
  • Автоматическое выделение памяти и сборка мусора.
  • Система распределения стека.
  • Высокая безопасность благодаря исключению явного указателя и включению менеджера безопасности, ответственного за определение доступа к классам.
  • Идеально подходит для распределенных вычислений.
  • Предлагает множество API-интерфейсов для выполнения различных задач, таких как подключение к базе данных, работа в сети, утилиты и синтаксический анализ XML.
  • Поддерживает многопоточность
  • Java используют в своем технологическом стеке такие компании, как Amazon, Adobe, Flipkart и Instagram.
  • Google создала на основе Java превосходную среду для Android-разработки – Android Studio.

Минусы:

  • Отсутствие шаблонов ограничивает создание качественных структур данных.
  • Ресурсоемкое управление памятью.
  • Медленнее, чем языки программирования, скомпилированные в собственном коде, такие как C и C++.

Пример синтаксиса:

class Main {

public static void main(String args) {

System.out.println("Hello World!");

}

}

Java – один из самых популярных языков программирования в мире сегодня используется в более чем в 3 млрд. устройств. Его можно применять для самых разных проектов – от написания кода приложений для смартфонов Android до создания сложных настольных приложений. Хотя Java основан на C++, он немного проще в изучении и использовании, особенно для начинающих.

Одна из фундаментальных идей разработчиков Java заключалась в том, чтобы создать язык программирования, который позволил бы их коду работать на двух совершенно непохожих друг на друга устройствах. Это иллюстрирует и лозунг Java: «Напиши один раз – запускай где угодно» (Write once, run anywhere).

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

4. C/C++

венедиктов4

Уровень: средний и продвинутый.

Необходимые навыки: комплексный подход к решению, базовые знания ПК. Поскольку C и C++ ориентированы на низкоуровневое управление компьютерными ресурсами, полезно знать такие функции компьютера, как управление памятью.

Области применения: настольные приложения и ПО, мобильные приложения, игровые движки и игры, VR, робототехника, cloud computing, веб-приложения.

Плюсы:

  • Более быстрое выполнение программ, чем в большинстве других языков программирования [C/C++].
  • Формирует основу для понимания более сложных языков программирования [C/C++].
  • Предпочтительный язык для разработки приложений для нескольких устройств и платформ [C++].
  • Широкий спектр областей применения, таких как игры, приложения с графическим интерфейсом и математическое моделирование в реальном времени [C++].
  • Облегчает доступ к заблокированным или скрытым объектам с помощью других языков программирования [C].
  • Высокая степень портативности [C].
  • Процедурно-ориентированный язык с группой функциональных модулей и блоков. Это упрощает отладку, тестирование и обслуживание программ [C].
  • Богатая библиотека функций [C++].
  • Работает близко к системному оборудованию и предлагает низкий уровень абстракции [C/C++].
  • Поддержка обработки исключений и перегрузки функций [C++].
  • Поставляется со стандартной библиотекой шаблонов (STL) – пулом готовых библиотек для различных структур данных, арифметических операций и алгоритмов [C++].

Минусы:

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

Пример синтаксиса (C++):

#include

int main()

{

std::cout << "Hello World!" << std::endl;

}

Ни одно настоящее сравнение языков программирования не может обойтись без этой пары. C++ – прямой потомок языка C, который считается настоящим «динозавром» среди языков программирования. C был выпущен аж в 1997 году и продолжает активно использоваться и сегодня. Почти все низкоуровневые системы, такие как ОС и файловые системы, написаны на C/C++.

C++ – мощный, высокопроизводительный язык, хотя и низкоуровневый, так как использует низкую степень абстракции. А это означает, что код на нем труднее «читать». Изучение низкоуровневого языка требует больше времени на понимание того, как работает сам язык. Поэтому у новичка, осваивающего C++, будет меньше времени для изучения основ компьютерного программирования в целом. Кроме того, при написании приложение на C++ с нуля, разработчику потребуется написать много кода. С другой стороны, этот язык чрезвычайно быстр, стабилен, масштабируем и эффективен. Именно поэтому C++ используют многие ресурсоемкие программы. Например, некоторые из самых красивых и популярных 3D-игр: Metro 2033, The Elder Scrolls V: Skyrim, Fallout 4, серии Assassin’s Creed, Battlefield/Battlefront, Medal of Honor, Need For Speed. Изучение C++ будет хорошим выбором для тех разработчиков, кто уже знаком с C и хочет работать над крупными проектами и иметь большой контроль над выполнением программ.

5. PHP

венедиктов5

Уровень: начальный и средний.

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

Области применения: бекэнд- и WordPress-разработка.

Плюсы:

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

Минусы:

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

Пример синтаксиса:

echo "Hello World!";

?>

Сегодня PHP является одним из самых популярных языков бекэнд-программирования в мире. Это скриптовый язык, работающий на стороне сервера для создания веб-страниц, написанных на HTML. Сегодня 80% из 10 миллионов крупнейших веб-сайтов в мире используют PHP.

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

6. Swift

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

венедиктов6

Области применения: мобильная разработка (iOS), разработка под Linux.

Плюсы:

  • Требует меньше навыков программирования по сравнению с другими языками.
  • Полная поддержка кода Objective-C.
  • Ускоряет процесс разработки.
  • Повышенная производительность.
  • Поддерживает динамические библиотеки.

Минусы:

  • Относительная «молодость» языка.
  • Плохое взаимодействие со сторонними инструментами.
  • Отсутствие поддержки более ранних версий iOS.

Пример синтаксиса:

print("Hello World!")

Язык программирования с открытым исходным кодом Swift был создан Apple в 2014 году для работы с платформами Apple Cocoa и Cocoa Touch. С этого времени он заменил Objective-C в качестве основного языка, применяемого Apple для разработки программ под Mac OS X, iOS и Linux. Он продолжает набирать развиваться и набирать обороты, вместе с растущей популярностью iOS.

Синтаксис Swift похож на английский язык, в этом он напоминает Java и C#. Его отличает хорошо оптимизированный код и очень высокая производительность, что позволяет ему эффективно масштабироваться. Кроме того, он поддерживает работу со старыми языками, такими как Objective-C.

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

Swift используется в популярных приложениях для iOS, таких, как WordPress, Mozilla Firefox, SoundCloud и, даже в игре Flappy Bird. Помимо самой Apple, этот язык входит в технологические стеки таких компаний, как Instagram, Uber и Slack.

7. Goland (Go)

венедиктов7

Уровень: начальный, средний.

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

Области применения: приложения Google, системное/сетевое программирование, монтаж аудио/видео, работа с большими данными.

Плюсы:

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

Минусы:

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

Пример синтаксиса:

func main() {

fmt.Println("Hello, World")

}

Go, также известный как Golang, был разработан Google в 2007 году для API и веб-приложений. В последнее время он стал одним из самых быстрорастущих языков бекэнд-программирования, благодаря своей простоте, а также способности работать с многоядерными и сетевыми системами и огромными кодовыми базами.

Go был создан для удовлетворения потребностей программистов, работающих над крупными проектами. Он завоевал популярность среди многих крупных ИТ-компаний, включая Google, Uber, Twitch, Dropbox, из-за своей простой и современной структуры, а также привычного синтаксиса. Сама компания Google применяет Go для поддержки собственной обширной сети серверов, а также своей облачной платформы Google Cloud Platform (GCP).

Golang обеспечивает отличную поддержку многопоточности, поэтому его часто используют компании, которые в значительной степени полагаются на распределенные системы, а также стартапы в Силиконовой долине. Гибкость и производительность Go сделала его популярным инструментом разработки для специалистов по data science.

8. C#

Уровень: от начального до среднего.

венедиктов8

Необходимые навыки: базовая компьютерная грамотность, понимание основных концепций объектно-ориентированного программирования (инкапсуляция, полиморфизм, абстракция, наследование, интерфейсы), базовые знания C, C++ или Java, чтобы иметь начальное представление о синтаксисе C#.

Области применения: разработка игр (Unity), десктопные приложения (Microsoft, Windows), веб-сервисы и приложения.

Плюсы:

  • Прост в освоении и понимании, особенно для тех, кто знаком с основами объектно-ориентированного программирования.
  • Это мультипарадигменный объектно-ориентированный язык поддерживает универсальный, императивный, функциональный и декларативный стили программирования.
  • Полностью интегрирован с библиотеками .NET.
  • Идеально подходит для всех типов разработки под Windows.
  • Способен работать с общими кодовыми базами.
  • Богатый набор библиотечных функций и типов данных.
  • Поддерживает безопасность типов.
  • Быстрое время компиляции и выполнения.
  • Используется такими ведущими IT-компаниями, как Microsoft, Stack Overflow, Accenture и Alibaba Travels.

Минусы:

  • Разрешает указатели в «небезопасных» блоках.
  • Почти все переменные являются ссылками, а освобождение памяти осуществляется с помощью сборщика мусора.
  • Предлагает меньшую гибкость, чем C++.
  • Устранение ошибок требует серьезного опыта и знаний.

Пример синтаксиса:

using System;

{

static void Main()

{

Console.WriteLine("Hello World!");

}

}

Первоначально разработанный Microsoft для работы на платформе .NET, язык C# (произносится как C Sharp, «Си-шарп») основан на C и C++. Этот высокоуровневый язык немного напоминает английский, что облегчает восприятие C# новичками. В отличие от своего ближайшего «родственника» C++, он абстрагирует многие сложные задачи, необходимые для того, чтобы компьютер мог работать с кодом.

C# — основной язык разработки программного обеспечения и программ для платформы Microsoft. Еще одной популярной сферой применения для C# является игровая индустрия. Например, это рекомендуемый язык для создания приложений на игровом движке Unity. Согласно открытой статистике, более 30% наиболее популярных мобильных игр были созданы на C#.

9. Ruby

венедиктов9

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

Области применения: бекэнд веб-разработка.

Плюсы:

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

Минусы:

  • Используется не так часто, как другие аналогичные языки программирования (например, Python или Java).
  • Низкая скорость выполнения приложения.
  • Отсутствие гибкости при сборке веб-приложений с нестандартными функциями.

Пример синтаксиса:

puts"Hello World!"

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

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

Помимо простоты в обучении, существенным преимуществом Ruby является обилие мощных веб-фреймворков и приложений, написанных на этом языке. В их число, например, входит крайне популярный в любом случае, фреймворк Ruby on Rails (RoR). Этот стабильный и гибкий язык используют такие крупные международные компании, как Twitch, Shopify, Starbucks, Twitter, Hulu, Groupon, Airbnb и GitHub. Более того, Ruby регулярно попадает в верхние строчки популярных рейтингов самых высокооплачиваемых языков программирования в мире.

10. Kotlin

венедиктов10

Уровень: средний, продвинутый.

Необходимые навыки: опыт работы с языками программирования, в частности с Java.

Области применения: Android-, веб-, мобильная, серверная и десктоп разработка.

Плюсы:

  • Надежность — Kotlin прошел длительный период альфа- и бета-тестирования, к тому же имеет официальную поддержку от Google.
  • Короткое время разработки.
  • 100% совместимость с Java.
  • Лаконичный код и структурированный параллелизм.
  • Поддержка отладки — обнаружение ошибок во время компиляции.
  • Поддержка многих популярных IDE, включая Android Studio, Atom, SublimeText и Vim.
  • Примерно на 20% меньше кода по сравнению с Java.

Минусы:

  • Относительно нестабильная скорость компиляции.
  • Трудность внедрения в производства из-за отсутствия большого числа Kotlin-разработчиков.
  • Нет статического ключевого слова.

Пример синтаксиса:

println("Hello, World!")

Kotlin — язык программирования общего назначения из семейства JVM с автоматическим выводом типов. Первоначально разработан и представлен JetBrains в 2011 году как Project Kotlin. Первая версия была официально выпущена в 2016 году. Он совместим с Java и поддерживает функциональные языки программирования.

С 2019 года Kotlin является предпочтительным языком Google для приложений на Android. Его используют такие крупные компании, как Coursera, Pinterest, Uber, Trello и Amazon. Поэтому те, кто только начинает карьеру и задумываются о том, какой язык программирования учить новичку для мобильной разработки под Google, определенно должны остановить выбор на Kotlin.

венедиктов11

Конечно, сделать полноценное сравнение преимуществ и недостатков всех самых популярных языков программирования в рамка обзора просто невозможно. В частности, в этом обзоре не были упомянуты такие актуальные языки программирования, как SQL, HTML, Visual Basic, R, Assembly, Delphi, Rust, Matlab, Lua и многие другие. Ответить на вопрос о том, какой язык программирования самый лучший, невозможно. Выбор языка программирования зависит от того, чем вы хотите заняться: разрабатывать мобильные приложения, веб-сайты, десктопные программы, модели машинного обучения или другое.

2.2 Рейтинг языков программирования 2022-2023 гг

Для начала посмотрим рейтинг языков программирования на GitHub за 2022 год, который был опубликован в отчёте Octoverse 10 ноября 2022 года (Рисунок 2). Рейтинг GitHub собирается на основе количества репозиториев, использующих тот или иной язык программирования. Здесь самым популярным языком программирования в 2022 году определён JavaScript. На втором месте находится Python. На третьем – Java. Далее следуют Typescript и C#. На шестой позиции расположился C++, который сместил на седьмую позицию PHP. На восьмом, девятом и десятом месте – соответственно Shell, C и Ruby.

Рейтинг языков программирования на GitHub:

венедиктов12

Рисунок 2

Теперь предлагаю посмотреть индекс TIOBE за 2022 год и узнать какой же язык программирования вошёл в 2023 год находясь на первом месте этого рейтинга (Рисунок 3) Индекс TIOBE отражает популярность языков программирования. Рейтинг учитывает количество разработчиков, курсов и статей по конкретному языку во всём мире. Для вычисления позиции в рейтинге используются данные популярных поисковых движков и сайтов: Google, Bing, «Википедии», YouTube и других.

На первом месте находится Python. Этот язык программирования уже несколько раз признавался языком года по данным индекса TIOBE и вот сейчас мы вновь видим его на первой строчке рейтинга. На втором месте с незначительным отставанием находится язык программирования C. На третьем месте оказался язык C++, а Java опустился на 4-ю строчку. Это первый случай с 2001 года, когда Java не попал в ТОП-3 языков программирования. Соответственно C++ впервые с момента основания индекса TIOBE сумел обойти Java.

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

венедиктов13

Рисунок 3

2.3 Наиболее популярные сферы использования языков программирования

Backend – одна из двух частей веб-разработки. В эту категорию входят языки, используемые для программирования серверной части сайтов, многопользовательских игр, приложений мобильного банкинга и ряда веб-приложений, а также любых проектов, где взаимодействуют клиент и сервер.Backend-разработчик должен уметь работать с несколькими серверными технологиями. Их подборка зависит от назначения проекта. Например, для типичной веб-разработки обязательно использовать Python, PHP. Если речь идет о многопользовательских играх, лучше предпочесть С++. Для сайтов с объемными базами данных применяется Java. Чтобы ускорить процесс разработки, программисты активно используют фреймворки, например, Laravel для PHP, Django для Python.

Frontend-разработчик отвечает за видимую пользователю часть приложения или сайта, с которой непосредственно взаимодействует человек. На таком программисте лежит ответственность за корректную работу проекта на различных платформах, в любых браузерах, за работоспособность онлайн-калькуляторов и форм обратной связи, скорость загрузки веб-страниц и другие моменты. Для современного Frontend-разработчика обязательным считается знание JavaScript и ряда дополнительных инструментов, например, CSS, HTML5. Активно используются фреймворки, в том числе React, Vue.js, AngularJS, Bootstrap, jQuery. Для ускорения работы применяются «сборщики», например, Gulp, WebPack.

венедиктов14

Мобильные приложения – для разработки приложений для смартфонов, планшетных компьютеров, других устройств на базе операционных систем Android, Apple и ряда других используются специализированные языки. Так, программы для iOS, на которой работают смартфоны iPhone, создаются с помощью Swift. Для этой задачи подходит и более старый Objective-C, которому на смену пришел уже упомянутый Swift.

Что касается мобильной разработки для устройств на Android, для этой задачи используется среда программирования Android Studio, технологии Java, Kotlin.

Game Dev – стремительное развитие игровой индустрии стало определенным толчком для появления новых языков программирования, заточенных непосредственно под игровую разработку. В числе таких технологий движки Unreal Engine, Unity. Для работы с ними используются преимущественно C++, C#, Java причем одних только навыков разработки на них недостаточно. Игровому разработчику не менее важно понимать специфику программирования с учетом привязки к выбранному движку.

Data Science – cпециалисты в этой сфере занимаются программированием прогнозных моделей, машинным обучением. По сути своей это преподаватели для компьютеров – они учат машину анализировать большие объемы информации, искать закономерности, на основе этого выносить предположения. В рамках отрасли Data Science разрабатываются алгоритмы поиска, сервисы с прогнозами погоды и курсов валют, приложения для сбора и анализа данных сна человека. Широко используются:

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

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

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

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

Automation QA. Отрасль IT на рубеже программирования и тестирования. Специалист в этой сфере разрабатывает логику автоматизированных тестов и реализует их. Программист создает приложения, которые ищут ошибки в других программах и сайтах, проводят нагрузочные тесты, выявляют уязвимости для их дальнейшего устранения. Одним из самых популярных инструментом для Automation QA является Java. Также широко используются JavaScript, Python и ряд других.

Desktop-приложения (рис.2).В эту категорию входят любые программы, которые разрабатываются для операционных систем Windows, Linux, MacOS и ряда других менее популярных платформ. Браузеры, мультимедийные плееры, текстовые и графические редакторы, среды разработки для программирования – это лишь небольшая часть того, созданием чего занимаются desktop-разработчики.

венедиктов15

Рисунок 4 Пример десктопных приложений

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

Нейронные сети (рис.3).Уникальность этой сферы в том, что для разработки нейронной сети подходит практически любая технология программирования. Причина проста: в этом процессе на первом месте стоит не технология, а правильность описания алгоритмов и математических функций. В той или иной степени с этим может справиться Python, C++ и даже JavaScript. Несмотря на это, большинство нейронных сетей написаны на Питоне. Он поддерживает сотни библиотек, написанных для этой сферы, что делает его бесспорным фаворитом и очевидным выбором для разработчиков.

венедиктов16

Рисунок 5 Топология типичной нейросети

2.4 Создание игры с помощью языка программирования Python

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

В данном разделе я покажу, как разработать игру «Змейка» на Python. Это одна из самых распространенных аркадв мире. В этой игре основная цель игрока – поймать максимальное количество фруктов, не ударившись о стену или себя. «Змейку» на Python буду писать при помощи библиотеки PyGame, которую используют для создания игр. Pygame – популярная библиотека для создания игр под различные устройства на Windows, macOS, Linux или Android. Она помогает разработчику не только описать геймплей, но и работать с клавиатурой, мышью, акселерометром, звуком и видео. Pygame – не самостоятельная библиотека. На самом деле это обёртка для библиотеки SDL, Simple DirectMedia Layer. Именно SDL позволяет задействовать любые внешние устройства – например, мышь или клавиатуру. А Pygame делает работу с ними удобной для Python-разработчика.

Установить Pygame просто. Для этого воспользуемся терминалом или командной строкой и командой pip:

pip install pygame

Инициализация и модули

Библиотека Pygame состоит из конструкций на языке Python и включает в себя несколько модулей. Модули позволяют получить доступ к определённому устройству и содержат методы для работы с ним. Например, модуль display позволяет работать с экраном, а joystick – считывать движения с джойстика.

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

Displays и Surfaces: рисуем игровое поле

Помимо модулей, Pygame включает несколько классов Python, которые работают с концепциями, не зависящими от аппаратного обеспечения. Одна из таких концепций – Surface. Surface, можно сказать, определяет прямоугольную область, на которой можно рисовать. Если переносить на практику, то этот класс позволяет создать игровое поле. Он широко используется при работе с Pygame, и мы тоже поработаем с ним при создании «Змейки».

В Pygame вся информация выводится на игровое поле, которому в коде соответствует класс display. Игровое поле может быть полноэкранным или занимать часть экрана. Display создаётся с помощью функции .set_mode(), которая возвращает Surface, представляющий видимую часть окна.

Именно эту область вы будете передавать в функции рисования, такие как pygame.draw.circle(), а содержимое этого Surface будет выводиться на дисплей при вызове pygame.display.flip(). Звучит сложно, но на практике будет проще. Оба класса мы будем использовать при создании «Змейки».

Изображения и прямоугольники

Работать с изображениями в Pygame можно двумя способами: создавать их с нуля на экране или использовать изображения с диска. И тот и другой тип можно перезаписывать, загружать и сохранять в различных форматах — например, в PNG и JPG. Изображения – не самостоятельные компоненты: они загружаются в объекты Surface, которые можно изменять и выводить на дисплеи различными способами.

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

Продумываем и описываем правила игры

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

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

Создаём игру с нуля

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

Шаг 1

Создаём игровое поле

Чтобы создать окно с игрой с помощью Pygame, необходимо использовать функцию display.set_mode() и передать в неё желаемый размер окна в пикселях. Также необходимо использовать методы init() и quit() для инициализации библиотеки в начале кода и её деинициализации в конце кода.

Метод update() используется для обновления содержимого экрана. Существует ещё метод flip(), который работает аналогично update(). Разница в том, что метод update() обновляет только внесённые изменения, а метод flip() перерисовывает экран целиком. Но если в метод update() не передавать никакие параметры, то также обновится весь экран.

import pygame
pygame.init()
dis=pygame.display.set_mode((500,400)) #Задаём размер игрового поля.
pygame.display.update()
pygame.quit()
quit()
Если сейчас запустить этот код, то экран игры сразу же закроется. Это связано с тем, что код сразу переходит к следующей строчке pygame.quit(), отключающей библиотеку и наше игровое поле. Чтобы избежать этого, необходимо воспользоваться циклом while – он не позволит игровому экрану закрыться:

import pygame
pygame.init() dis=pygame.display.set_mode((500,400))
pygame.display.update()
pygame.display.set_caption('Змейка') #Добавляем название игры.
game_over=False #Создаём переменную, которая поможет нам контролировать статус игры — завершена она или нет. Изначально присваиваем значение False,
то есть игра продолжается.

while not game_over:
for event in pygame.event.get():
print(event) #Выводить в терминал все произошедшие события.
pygame.quit()
quit()

Кроме этого, мы добавили в код ещё две сущности: название игры и функцию для отслеживания игровых событий. Чтобы у окна с игрой появилось название, мы используем pygame.display.set_caption('') (название пишем в кавычках). А функция event.get() возвращает в терминал все события, которые происходят с игрой.

Запустим код и посмотрим, что получилось:

венедиктов17

Теперь игровое окно не закрывается само по себе. Однако и закрыть его мы тоже не сможем — если нажать на кнопку «Выход», ничего не произойдёт. Исправляем это с помощью кода: добавляем событие QUIT, закрывающее окно.

import pygame
pygame.init()
dis=pygame.display.set_mode((500, 400))
pygame.display.update()
pygame.display.set_caption('Змейка')
game_over=False
while not game_over:
for event in pygame.event.get():
if event.type==pygame.QUIT:
game_over=True
pygame.quit()
quit()

Теперь кнопка выхода работает как надо. Если нажать на неё, то окно с игрой закроется.

Шаг 2

Создаём змейку

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

Наша змейка – прямоугольник, поэтому мы воспользуемся функцией создания прямоугольников draw.rect(). Она позволяет задать размер и цвет прямоугольника.

import pygame
pygame.init()
dis=pygame.display.set_mode((500, 400))
pygame.display.update()
pygame.display.set_caption('Змейка')
game_over=False
while not game_over:
for event in pygame.event.get():
if event.type==pygame.QUIT:
game_over=True
pygame.quit()
quit()

Запустим код и посмотрим на результат. Ближе к центру экрана появился белый квадрат, который и будет нашей змейкой:

венедиктов18

Шаг 3

Описываем движения змейки

Управлять перемещением змейки можно с помощью специального класса Pygame KEYDOWN. Класс позволяет использовать четыре стандартных события, получая их с клавиатуры: K_UP, K_DOWN, K_LEFT и K_RIGHT — они соответствуют движениям змейки вверх, вниз, влево и вправо. Срабатывание любого события из класса KEYDOWN приводит к изменению положения змейки. Зададим шаг этого движения в 10 пикселей.

Кроме того, мы должны создать две переменные для хранения значений координат первой клетки нашей змейки по осям x и y. Назовём их x1_change и y1_change.

mport pygame
pygame.init()
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
dis = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Змейка')
game_over = False
x1 = 300 #Указываем начальное значение положения змейки по оси х.
y1 = 300 #Указываем начальное значение положения змейки по оси y.
x1_change = 0 #Создаём переменную, которой в цикле while будут присваиваться значения изменения положения змейки по оси х.
y1_change = 0 #создаём переменную, которой в цикле while будут присваиваться значения изменения положения змейки по оси y.
clock = pygame.time.Clock()
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN: #Добавляем считывание направления движений с клавиатуры.
if event.key == pygame.K_LEFT:
x1_change = -10 #Указываем шаг изменения положения змейки в 10 пикселей.
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = 10
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -10
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = 10
x1_change = 0
x1 += x1_change #Записываем новое значение положения змейки по оси х.
y1 += y1_change #Записываем новое значение положения змейки по оси y.
dis.fill(white)
pygame.draw.rect(dis, black, [x1, y1, 10, 10])
pygame.display.update()
clock.tick(30) pygame.quit()quit()

Теперь змейка двигается по игровому полю.

Шаг 4

Учитываем препятствия — границы игрового поля

Если змейка попадает на границу экрана, то игрок терпит поражение, а игра заканчивается. Чтобы закодить это правило, можно воспользоваться оператором if, который определяет координаты x и y для змейки и анализирует, выходят ли они за границы игрового поля. Добавим необходимый код.

import pygame
import time
pygame.init()
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
dis_width = 800 #Зададим размер игрового поля через две переменные.
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_width))pygame.display.set_caption('snake game')
game_over = False
x1 = dis_width/2 #Стартовое положение змейки по осям рассчитывается
через переменные, указывающие размер игрового экрана.
y1 = dis_height/2
snake_block=10 #Укажем в переменной стандартную величину сдвига положения змейки при нажатии на клавиши.
x1_change = 0
y1_change = 0
clock = pygame.time.Clock()
snake_speed=15 #Ограничим скорость движения змейки.
font_style = pygame.font.SysFont(None, 50)
def message(msg,color): #Создадим функцию, которая будет показывать
нам сообщения на игровом экране.
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width/2, dis_height/2])
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_over = True #Явно укажем, что если координаты змейки выходят за рамки игрового поля, то игра должна закончиться.
х1 += x1_change
y1 += y1_change
dis.fill(white)
pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])
pygame.display.update()
clock.tick(snake_speed)
message("Вы проиграли :(",red) #Сообщение, которое появляется при проигрыше. В нашем случае — при выходе змейки за пределы игрового поля.
pygame.display.update()
time.sleep(2)
pygame.quit()
quit()

Теперь, если змейка достигнет края экрана, игра закончится, а на дисплее появится сообщение о проигрыше:

венедиктов19

Шаг 5

Добавляем еду для змейки

Теперь добавим «еду». Используем библиотеку random, чтобы она появлялась в случайном месте на игровом поле. Когда наша змейка будет проходить через еду, то её длина будет увеличиваться. Это мы добавим на следующем шаге. Кроме того, дадим возможность игроку выйти из игры или начать игру заново после проигрыша.

gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(white)
pygame.draw.rect(dis, blue, [foodx, foody, snake_block, snake_block])
pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])
pygame.display.update()

pygame.quit()
quit()

gameLoop()

Теперь при запуске игры кроме самой змейки будет показана еда. В нашем случае – в виде синего квадрата:

венедиктов20

Шаг 6

Увеличиваем длину змейки

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

import pygame
import time
import random

pygame.init()

white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

dis_width = 800
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Змейка')
clock = pygame.time.Clock()
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont("bahnschrift", 25) #Укажем название
шрифта и его размер для системных сообщений, например, при завершении игры.
score_font = pygame.font.SysFont("comicsansms", 35) #Укажем шрифт и
его размер для отображения счёта. Это мы реализуем очень скоро.

def our_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])

def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])

def gameLoop():
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = [] #Создаём список, в котором будем хранить
показатель текущей длины змейки.
Length_of_snake = 1
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
while not game_over:
while game_close == True:
dis.fill(blue)
message("Вы проиграли! Нажмите Q для выхода
или C для повторной игры", red)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(blue)
pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
snake_Head = [] #Создаём список, в котором будет храниться
показатель длины змейки при движениях.
snake_Head.append(x1) #Добавляем значения в список при
изменении по оси х.
snake_Head.append(y1) #Добавляем значения в список при
изменении по оси y.
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0] #Удаляем первый элемент в списке
длины змейки, чтобы она не увеличивалась сама по себе при движениях.
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
pygame.display.update()
if x1 == foodx and y1 == foody: #Указываем, что в случаях,
если координаты головы змейки совпадают с координатами еды, еда появляется
в новом месте, а длина змейки увеличивается на одну клетку.
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(snake_speed)
pygame.quit()
quit()

gameLoop()

венедиктов21

Шаг 7

Добавляем отображение счёта

Добавим отображение счёта текущей игры. Для этого создадим функцию Your_score. Она будет отображать длину змейки, вычитая из неё 1 (ведь 1 – это начальный размер змейки, и это не является достижением игрока).

def Your_score(score):
value = score_font.render("Ваш счёт: " + str(score), True, yellow)
dis.blit(value, [0, 0])

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

Your_score(Length_of_snake - 1)

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

венедиктов22

Игра полностью готова, итоговый код:

import pygame
import time
import random
pygame.init()
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Змейка')
clock = pygame.time.Clock()
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)

def Your_score(score):
value = score_font.render("Ваш счёт: " + str(score), True, yellow)
dis.blit(value, [0, 0])

def our_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])

def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])

def gameLoop():
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = []
Length_of_snake = 1
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
while not game_over:
while game_close == True:
dis.fill(blue)
message("Вы проиграли! Нажмите Q для выхода или C для повторной игры", red)
Your_score(Length_of_snake - 1)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(blue)
pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
Your_score(Length_of_snake - 1)
pygame.display.update()
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(snake_speed)
pygame.quit()
quit()
gameLoop()

Заключение

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

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

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

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

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

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

  1. Зимина К. И. Положительное влияние компьютерных игр на развитие подростков // Современная психология: материалы II Междунар. науч. конф. (г. Пермь, июль 2014 г.). – Пермь: Меркурий, 2014. – С. 43-45.
  2. Теренс Пратт. Языки программирования: разработка и реализация/ Programming Language Design and Implementation (PLDI). – 1-е издание. – МИР, 1979.


Если страница Вам понравилась, поделитесь в социальных сетях:

Объявление

Статистика