Программирование настолько глубоко вошло в быт, что люди перестали замечать, как изменилась жизнь. Сотни тысяч привычных вещей не существовали бы без программирования или были бы гораздо менее удобными в использовании. Привычные бытовые приборы: микроволновая печь, стиральная машина — работают благодаря заложенным в них программам. программирование позволяет в принципе существовать современному виртуальному миру, где в основном проводит время практически каждый современный человек. Форумы, социальные сети и т.п. – все это поддерживается исключительно при помощи профессиональных программистов. Без использования компьютеров и специализированных программ достаточно сложно уже представить, как бы все это могло функционировать.
Задумываясь над этим, человек начинает осознавать, что в современной жизни программирование – это все, и даже если мы не имеем каких-то навыков в этой области, программирование так или иначе нас затрагивает.
Актуальность проекта обусловлена тем, что программирование является востребованным практически во всех сферах нашей жизни, вследствие чего вряд ли стоит сомневаться в его практической пользе. Оно открывает современному человеку новые возможности и перспективы.
| Вложение | Размер |
|---|---|
| 690.7 КБ |
Муниципальное бюджетное общеобразовательное учреждение
Тюменцевская средняя общеобразовательная школа
Тюменцевского района Алтайского края
____________________
Индивидуальный проект
«Человек и машина. Общий язык»
Выполнил: Алиев Олег,
учащийся 11 класса
Руководитель проекта: Рем И.Д.
учитель информатики
с.Тюменцево
2023 г.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
Вступление о том, что IT прямо сейчас развивается с огромной скоростью, банально: это известно всем, даже первокласснику со смартфоном в руке. 21-столетие это век «цифры», инноваций, кибернетики, робототехники. Поэтому сейчас мы все чаще слышим такое слово, как «программирование». Написание программ осложняется тем, что компьютер совсем не похож на людей и "воспитание" у нас разное. Если бы это было не так, то и компьютер, и мы одинаково бы воспринимали окружающий мир и умели бы говорить на одном языке. Тогда нам было бы легче понимать друг друга: достаточно попросить компьютер о чем-либо — и все. Эти машины устроены совсем не так, как человеческий мозг, и "видят" мир иначе, поэтому обучить их мышлению, подобному нашему, — непростая задача. Суть языков программирования заключается в их главном предназначении – коммуникация между машиной и человеком посредством простого и понятного кода. Они пришли на смену нулям и единицам, перфокартам и перфолентам.
Программирование настолько глубоко вошло в быт, что люди перестали замечать, как изменилась жизнь. Сотни тысяч привычных вещей не существовали бы без программирования или были бы гораздо менее удобными в использовании. Привычные бытовые приборы: микроволновая печь, стиральная машина — работают благодаря заложенным в них программам. программирование позволяет в принципе существовать современному виртуальному миру, где в основном проводит время практически каждый современный человек. Форумы, социальные сети и т.п. – все это поддерживается исключительно при помощи профессиональных программистов. Без использования компьютеров и специализированных программ достаточно сложно уже представить, как бы все это могло функционировать.
Задумываясь над этим, человек начинает осознавать, что в современной жизни программирование – это все, и даже если мы не имеем каких-то навыков в этой области, программирование так или иначе нас затрагивает.
Актуальность проекта обусловлена тем, что программирование является востребованным практически во всех сферах нашей жизни, вследствие чего вряд ли стоит сомневаться в его практической пользе. Оно открывает современному человеку новые возможности и перспективы.
Цель проекта: проследить историю возникновения языков программирования от начальных этапов до наших дней и создать собственного чат - бота в VK.
Задачи:
Проектный продукт: полностью функционирующий чат-бот, написанный на одном из современных языков программирования.
Глава 1. Понятие о языках программирования
Языком программирования называют определенную систему знаков и символов, предназначенную для написания компьютерных программ. Данная знаковая система подчинена различным правилам и включает в себя некий набор команд, с помощью которых пишется программный код.
Люди общаются друг с другом на естественных языках, разработчики же с компьютерами взаимодействуют на языках программирования. Написанный программистом код — это алгоритм действий, который должно выполнить устройство. Таким образом, язык программирования помогает человеку записать понятную компьютеру последовательность операций.
Программирование - это сама основа цифровой эпохи, в которой мы живем сегодня. Каждый раз, когда нам нравится публикация в социальных сетях, мы отправляем электронное письмо или устанавливаете будильник на своем телефоне, язык программирования работает за кулисами, дергая за ниточки.
Но с чего все началось? И что стимулировало его рост в ведущую отрасль, существующую сегодня? Прежде всего, почему знание истории языков программирования важно для подбора ит специалистов и разработчиков?
Первый в мире язык компьютерного программирования был изобретен еще в 1843 году. Ада Лавлейс изобрела первый в истории машинный алгоритм для одной из первых вычислительных машин, который она записала на листе бумаги, потому что в то время компьютеров не существовало! С тех пор языки программирования, очевидно, прошли долгий путь, но для того, чтобы понять историю языков, нужно сначала понять их происхождение.
Первые известные языки были сложными машинными кодами, которые вручную вводились в первые вычислительные машины. Компьютерное программирование быстро превратилось из машинных кодов в полностью автоматизированный, читаемый человеком код.
1843: Машинный алгоритм Ады Лавлейс. Ада Лавлейс изобретает первый в истории машинный алгоритм для разностной машины Чарльза Бэббиджа, который закладывает основу для всех языков программирования.
1944-45: Планкалкюль. Где-то между 1944-45 годами Конрад Цузе разработал первый «настоящий» язык программирования под названием Plankalkül (Расчет плана). Язык Zeus (помимо прочего) позволял создавать процедуры, в которых хранятся фрагменты кода, которые можно было вызывать снова и снова для выполнения рутинных операций.
1949: Язык Ассемблера. Ассемблер использовался в автоматическом калькуляторе с электронным запоминанием задержки (EDSAC). Ассемблер был разновидностью низкоуровневого языка программирования, который упростил язык машинного кода. Другими словами, конкретные инструкции, необходимые для работы с компьютером.
1949: Shortcode. Шорткод (или сокращенный код) был первым языком высокого уровня (HLL), предложенным Джоном Макколи в 1949 году. Однако именно Уильям Шмитт реализовал его для компьютера BINAC в том же году и для UNIVAC в 1950 году.
1952: Автокодирование. Автокод был общим термином, используемым для семейства языков программирования. Autocode, впервые разработанный Аликом Гленни для компьютера Mark 1 в Университете Манчестера, был первым в истории скомпилированным языком, который был реализован, что означает, что он может быть переведен непосредственно в машинный код с помощью программы, называемой компилятором. Автокод использовался на первых вычислительных машинах Ferranti Pegasus и Sirius в дополнение к Mark 1.
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 Биллом Гейтсом и Полом Алленом и стал первым товарным продуктом компании.
1970: ПАСКАЛЬ. Названный в честь французского математика Блеза Паскаля, Никлаус Вирт разработал язык программирования в его честь. Он был разработан как средство обучения компьютерному программированию, что означало, что его легко освоить. Apple предпочитала его на заре своей деятельности из-за простоты использования и мощности.
1972: Smalltalk. Smalltalk, разработанный в исследовательском центре Xerox в Пало-Альто Аланом Кей, Адель Голдберг и Дэном Ингаллсом, позволял программистам изменять код на лету. Он представил множество аспектов языка программирования, которые сегодня являются видимыми языками, такими как Python, Java и Ruby. Такие компании, как Leafly, Logitech и CrowdStrike, заявляют, что используют Smalltalk в своих технических стеках.
1972: C (Си). Разработан Деннисом Ричи из Bell Telephone Laboratories для использования с операционной системой Unix. Он был назван C, потому что был основан на более раннем языке под названием «B». Многие из ведущих в настоящее время языков являются производными от C, включая; C #, Java, JavaScript, Perl, PHP и Python. Он также использовался / до сих пор используется такими крупными компаниями, как Google, Facebook и Apple.
1972: SQL (в то время SEQUEL). SQL был впервые разработан исследователями IBM Рэймондом Бойсом и Дональдом Чемберленом. SEQUEL (как его тогда называли) используется для просмотра и изменения информации, хранящейся в базах данных. В настоящее время язык является аббревиатурой - SQL, что означает язык структурированных запросов. Существует множество компаний, использующих SQL, и некоторые из них включают Microsoft и Accenture.
1980/81: Ада. Изначально Ada была разработана командой во главе с Джин Ичбиа из CUU Honeywell Bull по контракту с Министерством обороны США. Названный в честь математика середины 19-го века Ады Лавлейс, Ada представляет собой структурированный, статически типизированный, императивный, объектно-ориентированный язык программирования высокого уровня с широким спектром возможностей. Ада была расширена из других популярных в то время языков программирования, таких как Паскаль. Ada используется в системах управления воздушным движением в таких странах, как Австралия, Бельгия и Германия, а также во многих других транспортных и космических проектах.
1983: C ++. Бьярн Страуструп модифицировал язык C в Bell Labs, C ++ - это расширение C с такими улучшениями, как классы, виртуальные функции и шаблоны. Он был включен в 10 лучших языков программирования с 1986 года и получил статус Зала славы в 2003 году. C ++ используется в MS Office, Adobe Photoshop, игровых движках и другом высокопроизводительном программном обеспечении.
1983: Objective-C. Objective-C, разработанный Брэдом Коксом и Томом Лавом, является основным языком программирования, используемым для написания программного обеспечения для операционных систем Apple macOS и iOS.
1987: Perl. Perl был создан Ларри Уоллом и представляет собой универсальный язык программирования высокого уровня. Первоначально он был разработан как язык сценариев, предназначенный для редактирования текста, но в настоящее время он широко используется для многих целей, таких как CGI, приложения баз данных , системное администрирование, сетевое программирование и графическое программирование.
1990: Haskell. Haskell - это язык программирования общего назначения, названный в честь американского логика и математика Хаскелла Брукса Карри. Это чисто функциональный язык программирования, то есть в первую очередь математический. Он используется во многих отраслях, особенно в тех, которые имеют дело со сложными вычислениями, записями и обработкой чисел. Как и многие другие языки программирования той эпохи, не так уж часто можно увидеть, что Haskell используется для хорошо известных приложений. С учетом сказанного, язык программирования был использован для написания ряда игр, одна из которых - Nikki and the Robots.
1991: Python. Названный в честь британской комедийной труппы «Монти Пайтон», Python был разработан Гвидо Ван Россумом. Это универсальный язык программирования высокого уровня, созданный для поддержки различных стилей программирования и приятный в использовании (ряд руководств, примеров и инструкций часто содержат ссылки на Monty Python). Python по сей день является одним из самых популярных языков программирования в мире, который используют такие компании, как Google, Yahoo и Spotify.
1991: Visual Basic. Visual Basic, разработанный Microsoft, позволяет программистам использовать стиль перетаскивания для выбора и изменения предварительно выбранных фрагментов кода через графический интерфейс пользователя (GUI). В наши дни этот язык не используется слишком часто, однако Microsoft частично использовала Visual Basic для ряда своих приложений, таких как Word, Excel и Access.
1993: Ruby. Ruby, созданный Юкихиро Мацумото, представляет собой интерпретируемый язык программирования высокого уровня. Язык обучения, на который повлияли Perl, Ada, Lisp и Smalltalk - среди прочих. В основном Ruby используется для разработки веб-приложений и Ruby on Rails. Twitter, Hulu и Groupon - известные примеры компаний, использующих Ruby.
1995: Java. Java - это универсальный язык высокого уровня, созданный Джеймсом Гослингом для проекта интерактивного телевидения. Он обладает кросс-платформенной функциональностью и неизменно входит в число самых популярных языков программирования в мире. Java можно найти везде, от компьютеров до смартфонов и парковочных счетчиков.
1995: PHP. Ранее известный как «Персональная домашняя страница», что теперь означает «Препроцессор гипертекста», PHP был разработан Расмусом Лердорфом. Его основное применение включает создание и поддержку динамических веб-страниц, а также разработку на стороне сервера . Некоторые из крупнейших компаний по всему миру используют PHP, включая Facebook, Wikipedia, Digg, WordPress и Joomla.
1995: JavaScript. JavaScript был создан Бренданом Эйхом, этот язык в основном используется для динамической веб-разработки, документов PDF, веб-браузеров и виджетов рабочего стола. Почти каждый крупный веб-сайт использует JavaScript. Gmail, Adobe Photoshop и Mozilla Firefox включают несколько хорошо известных примеров.
2000: C #. Разработанный в Microsoft с надеждой на объединение вычислительных возможностей C ++ с простотой Visual Basic, C # основан на C ++ и имеет много общего с Java. Этот язык используется почти во всех продуктах Microsoft и используется в основном при разработке настольных приложений.
2003: Scala. Scala, разработанная Мартином Одерски, объединяет математическое функциональное программирование и организованное объектно-ориентированное программирование. Совместимость Scala с Java делает его полезным при разработке под Android. Linkedin, Twitter, Foursquare и Netflix - это всего лишь несколько примеров многих компаний, которые используют Scala в своих технических стеках.
2003: Groovy. Унаследованный от Java, Groovy был разработан Джеймсом Страчаном и Бобом МакВиртером. Язык повышает продуктивность, поскольку он лаконичен и прост в изучении. Некоторые известные компании, которые используют Groovy в своих технических стеках, - это Starbucks, Transferwise и Craftbase.
2009: Golang (Go). Go был разработан Google для решения проблем, возникающих из-за больших программных систем. Благодаря своей простой и современной структуре Go завоевал популярность среди некоторых крупнейших технологических компаний по всему миру, таких как Google, Uber, Twitch и Dropbox.
2014: Swift. Разработанный Apple в качестве замены C, C ++ и Objective-C, Swift был разработан с целью быть проще, чем вышеупомянутые языки, и оставлять меньше места для ошибок. Универсальность Swift означает, что его можно использовать для настольных, мобильных и облачных приложений. Ведущее языковое приложение Duolingo запустило новое приложение, написанное на Swift.
Не все языки программирования существуют вечно. Будь то результат развития технологий или просто замена более сложным языком. С учетом сказанного, ИТ специалисты по-прежнему используют некоторые старые языки программирования:
FORTRAN. Первоначальная версия FORTRAN была предложена в IBM Джоном Бэкусом еще в 1953 году. Это был первый компилятор-оптимизатор, который широко использовался в научной работе, поскольку его оптимизированный код выгодно конкурировал с написанным вручную кодом ассемблера. Этот язык до сих пор используется на некоторых из самых быстрых суперкомпьютеров в мире. С 1953 года была выпущена серия обновлений, последняя версия которых была выпущена в 2018 году.
COBOL. COBOL был разработан еще в 1959 году и был одним из первых языков программирования высокого уровня. Несмотря на то, что COBOL был изобретен так давно, он по-прежнему широко распространен. В одних только США 43% банковских систем построены на COBOL, что составляет 95% операций с банкоматами и 80% транзакций, совершаемых лично.
Ранние языки программирования Microsoft и Apple. Microsoft и Apple - две из самых фундаментальных компаний в истории языков программирования. BASIC (впервые выпущенный в 1964 году) был модифицирован основателями Microsoft Биллом Гейтсом и Полом Алленом в 1975 году. Их модифицированная версия стала Altair BASIC , который был первым продаваемым и распространяемым продуктом Microsoft, который привел к созданию компании.
Паскаль был предпочтительным языком программирования в первые дни Apple. Паскаль, изобретенный в начале 1970-х годов, понравился разработчикам Apple из-за его мощности и простоты использования. Однако, когда Apple приобрела библиотеку кода NeXTSTEP в 1996 году, Objective-C (который был лицензирован под NeXTSTEP) стал популярным языком, выбранным техническим гигантом.
По принципам программирования языки делятся на: процедурные (основой процедурных языков является описание последовательной смены состояния процессора, ячеек памяти и других устройств компьютера); непроцедурные (более эффективны для написания программ по поиску больших объемов данных, а также, когда невозможно точно описать процесс решения задачи).
Декларативные языки принято делить на две группы (или семейства):
Существуют также языки:
Языки программирования это очень крутая и полезная штука. Они позволяют создавать практически что угодно, ограничиваясь только вашим воображением. Но язык программирования - это, прежде всего, инструмент. И как каждый инструмент служит для определенных операций (забивать гвозди отверткой не очень удобно, согласитесь) так и язык программирования - каждый хорош в каких-то своих задачах и заточен под них.
C (Си) является одним из самых старых языков среди активно используемых сегодня в разработке программного обеспечения алгоритмических языков. На нем разрабатывают то, что принято обозначать «низкоуровневым программированием» - компоненты операционных систем, драйверы устройств, различные управляющие приборы и встраиваемые в них программы.
Java – это и разработка больших высоконагруженных продуктов для больших транснациональных компаний, и небольшие приложения и игры для Android.
Язык Go (он же Golang) появился в 2009 году, в стенах корпорации Google, когда уже были многоядерные процессоры. У Go есть goroutine - аналог потоков. Они потребляют только 2 Кб памяти. Таким образом, можно в любой момент активировать миллионы горутин. Поэтому Go отлично подходит для тех проектов, где требуется обрабатывать большое количество запросов параллельно.
C# правильно произносить: Си-шарп. Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET.
Python Кто сейчас не слышал о Python? Все, кто связан с анализом данных, банковской сферой, логистикой и даже играми знают об одном из самых легких в изучении языков. Python (он же питон, читается как «пайтон») занял свое место области, которую называют - data mining. Хорошо подходит для: создания нейросетей, анализ данных. Основные преимущества языка, хороший математический аппарат, простота изучения, кроссплатформенный, много вакансий, большое комьюнити. Недостатки: низкая скорость выполнения программ. Примеры проектов: Instagram, Youtube.
PHP — самый популярный язык для написания сайтов и Web-приложений. На нем написаны такие гиганты как Facebook, Wikipedia, Badoo, BlaBlaCar, TED и множество других проектов приносящих миллионы долларов своим создателям.
JavaScript — самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) всех тех интерактивных Web-приложений, которые сделали браузер таким же рабочим инструментом, как Word, Excel и тысячи других традиционных приложений для Windows.
HTML (HyperText Markup Language) Формально это не язык программирования. HTML- это язык разметки сайтов с помощью которого вы можете задать каркас веб страницы.
CSS (Cascading Style Sheets) Он, формально, тоже не является языком программирования. Он работает в паре с HTML и с его помощью можно всячески менять внешний вид веб-страницы. Если нужно изменить фон, размер шрифта и скругления фотографий на странице - CSS вам в этом главный помощник.
Kotlin — относительно молодой язык от российской компании JetBrains. Появился он в 2011 году. Из-за новизны языка у него есть свои недостатки, но они полностью окупаются его все более растущей необходимостью.
Вывод: большинство языков программирования были вдохновлены концепциями предыдущих языков программирования или построены на них. Сегодня, хотя старые языки по-прежнему служат прочной основой для новых, новые языки программирования упрощают работу программистов. Компании в значительной степени полагаются на программы для удовлетворения всех своих потребностей в данных, транзакциях и обслуживании клиентов. Наука и медицина нуждаются в точных и сложных программах для своих исследований. Мобильные приложения должны обновляться в соответствии с требованиями потребителей. И все эти новые и растущие потребности гарантируют, что языки компьютерного программирования, как старые, так и новые, останутся важной частью современной жизни.
Глава 2. Создание Бота с помощью Python
Python на удивление легко читается. Как интерпретируемый язык, он не преобразует код, чтобы он стал читаемым компьютером. Python также является языком программирования общего назначения высокого уровня. Разработчики сделали его хамелеоном в мире программирования. Кроме того, Python стремится создавать более чёткий и логичный код не только для небольших проектов, но и для более крупных.
Несколько интересных фактов, иллюстрирующих реальное влияние этого языка и для чего используется Python:
2.2. Разработка бота для VK.
1. Первоначальная цель.
Изначально задумывался скрипт для смены шрифтов для написания постов в соцсети «Вконтакте». Я написал скрипт, в котором каждая буква алфавита в строке, а также в некоторых случаях цифра или знак препинания, заменялись на аналогичный символ другого шрифта.
2. Подключение бота.
Работа над самим ботом началась с запроса в Google: «vk bot python docs», что вывело меня на 2 главных сайта по этой тематике: dev.vk.com и vk-api.readthedocs.io. Первый сайт — раздел ВКонтакте для разработчиков, главный справочник для всех тех, кто пытается сделать приложение, игру или бота в VK. Второй сайт более узкоспециализирован, он содержит документацию к библиотеке vk_api, которая и стала двигателем моего бота.
Методом проб и ошибок, рассматривая примеры подключения бота к сообществу в документации и играя с его настройками, я в итоге подключил своего бота к серверу (longpoll), с которого он получал «события» о получении сообщений, отметок, комментариев, подписок и прочего.
3. Первая команда бота.
Конечно, чувствуя себя первопроходцем на неизведанных землях, я не мог просто проигнорировать традицию всех программистов - вывод «hello world». Следуя инструкциям из документации, я написал функцию отправки сообщения, а после прописал условие вида:
если (текст полученного сообщения) = "привет" тогда - >
…. отправить_сообщение(id_чата, сообщение = "Hello World!")
Тогда Филч (так зовут моего бота) заговорил. После были добавлены команды типа «Филч, здравствуй/с добрым утром/спокойной ночи» и множество синонимов к данным фразам, а Филч отвечал не только текстом, но и стикерами.
4. Внедрение первоначальной функции.
Я вернулся к шрифтам. Функция получилась довольно массивной, поэтому я решил вынести её в отдельный модуль fonts. Соединив функцию преобразования текста с функцией отправки сообщения, теперь я создал возможность изменять шрифт не выходя из ВК. Казалось бы, дело сделано, но мне этого оказалось мало.
5. Погода.
Мне хотелось создать что-то полезное, но при этом то, что мне по силам. На ум пришла команда «погода». Опять же, воспользовавшись помощью интернета, я нашёл готовое решение – библиотека pyowm, которая отправляет запрос API openweathermap.org и получает в ответ информацию по заданному запросу. Теперь, написав в чат «/погода Москва», мы получали ответ от Филча, содержащий в себе температуру в городе в настоящее время, а также скорость ветра, влажность, давление, осадки.
6. Вложения.
Конечно, одним текстом в соцсетях не обойтись. Порывшись в официальной документации API VK, я внимательно осмотрел класс messages и обнаружил параметр attachments, отвечающий за вложения сообщений.
Всего существует 7 видов вложений:
Мне понадобилось 2 из них, а именно: audio и photo.
Я добавил несколько песен в сообщество, а после, указав data-full-id одной из них, попытался отправить от имени сообщества. Всё получилось. После этого я решил чуть усложнить логику данной команды, поделив музыку на несколько плейлистов: рэп, рок, инструментал и саундтреки. Так появились команды «/музыка» и «/музыка [плейлист]», отправляющие пользователю 5 случайных аудио из общего плейлиста группы или тематического соответственно. Подобным же образом я поступил с фотографиями сообщества. Команда «/картинка» отправляла случайную фотографию из общего альбома сообщества, а команда «/коты» отправляла фотографию из тематического альбома.
Вложение имеет формат "
7. Онлайн.
В моих планах Филч должен был работать преимущественно в беседах. Иногда люди хотят узнать, сколько человек в чате сейчас в сети, а в беседах с большим количеством людей это не очень удобно делать вручную. Для таких случаев у чат-ботов есть команда, показывающая онлайн беседы. Я взялся за реализацию этой функции и у своего бота.
В документации я нашёл метод messages.getConversationMembers принимающий peer_id и отправляющий в ответ некоторую информацию об участниках чата, в том числе и информацию об их онлайн-статусе. Помимо непосредственно информации о том, находится ли пользователь в сети в данный момент, в ответе также присутствовала информация о том, с какого устройства и из какого приложения он заходил. Так, если возвращённый параметр is_mobile = 1, значит пользователь заходил с мобильного устройства, иначе ― с ПК. Также, app_id возвращает id приложения, с которого заходил в сеть пользователь, например, если app_id = 3140623, значит пользователь заходил с приложения VK на платформе IPhone.
После я решил, что у меня уже достаточно команд, чтобы создать список команд. Я создал статью с гайдом по боту. По команде «/помощь» Филч отправлял сообщение, содержащее ссылку на статью с гайдом, ссылку для сообщения об ошибках и багах в работе бота, ссылку для предложения своих идей по развитию бота, а также список админов (собственно меня и моего соадмина), показывая их онлайн-статус, но уже полученный через метод users.get куда передаются id пользователей.
8. Развлекательные команды.
На этом этапе я решил реализовать 3 похожие команды, а именно "/шутка", "/цитата" и "/факт". Для этого я воспользовался помощью 3 сайтов: https://www.anekdot.ru/random/anekdot/, https://citaty.info/random, и https://randstuff.ru/fact/ соответственно. Я написал 3 парсера для каждого из сайтов, воспользовавшись библиотеками requests и bs4, достал необходимые материалы и записал их в определённые json-файлы при помощи библиотеки json. Далее создал функции для каждой команды: joke, citata и fact, которые доставали случайный элемент из файла и отправляли его пользователю.
9. Крокодил.
Есть такая игра, в которой один игрок должен объяснить слово, не называя его и родственные ему слова. Я её называю «шарады словами». Я решил реализовать эту команду в своём боте. Это первая игровая команда Филча. Команда, которая вынудила меня разобраться с таким параметром сообщения, как keyboard(клавиатура), а также событием MESSAGE_EVENT_ANSWER, отвечающим за ответ на нажатие кнопки на клавиатуре сообщения. Итак, логика игры. Пользователь пишет команду «!кроко», в ответ на это бот проверяет словарь croco_dict на наличие объекта с ключом формата "game_
if (game is not None) and (game.word is not None) and (command.lower() == game.word.lower()) and (uid != game.game_master).
Когда слово угадано, ведущим становится пользователь, отгадавший слово и так, пока игру не остановят.
10. Обновление с клавиатурой.
Разобравшись с клавиатурой, я решил обновить команды «/картинка», «/факт», «/шутка» и «/цитата», добавив им кнопку «Ещё», в которой для каждой из команд передавалось название команды, а Филч, проверяя полученное событие, эту команду выполнял. Это маленькое обновление позволило пользователям обращаться к часто используемым командам, не набирая текст вручную.
11. Кошелёк.
В этом обновлении я добавил Филчу валюту. Она пока не имеет оригинального названия и обозначается символом доллара ($). Как обычно, я решил хранить данные пользователей в json-файле. Я создал модуль money, в котором написал две функции: balance и bonus.
Команда «баланс», очевидно, отвечала за показ баланса. Функция balance обращалась к json-файлу money.json, пыталась найти ключ, идентичный id пользователя, а если это не удавалось, то создавала такой объект с параметрами {"
Деньгам необходимо откуда-то взяться, поэтому в этом же модуле я написал функцию bonus, с одноимённой командой, выдающей пользователю ежедневный бонус. С помощью функции datetime.now() из библиотеки datetime я получил настоящее время в unix-формате ― количество секунд прошедших с 01.01.1970. Время получения предыдущего бонуса записывается в файл money.json в unix-формате. Если с момента получения предыдущего бонуса прошло более 24 часов (86400 секунд), то пользователю начисляется ежедневный бонус в размере 200$, иначе, отформатировав время через написанною мной функцию time_format, Филч отправляет сообщение, в котором сообщает, сколько времени осталось до получения следующего ежедневного бонуса.
12. Ставки.
Теперь, когда у пользователя есть возможность посмотреть свой баланс и получить деньги с ежедневного бонуса, нам нужно позволить ему как-то ими распоряжаться. Самый простой способ потратить деньги ― проиграть их. Я создал модуль games и добавил ещё две игровые команды: «/монетка» и «/кубик».
Обе команды имеют крайне примитивный механизм. Команда «/монетка <орёл/решка> <ставка>» даёт игроку возможность попытать удачу или потерять всё. С шансом 49,5% на монетке выпадает орёл, с таким же шансом решка, а ещё процент приходится на нейтральную ситуацию, когда монетка «встаёт на ребро».
Команда «\кубик <число> <ставка>» работает точно также, но из-за большего риска, растёт и коэффициент выигрыша и, если поставивший 100$ на монетку может выиграть ещё 100$, то на кубике ставка вырастет впятеро. Кубик не имеет нейтральной ситуации.
13. Транзакции.
Дабы дать игрокам почувствовать себя хозяевами собственных кошельков, необходимо предоставить им возможность делиться своими средствами с другими пользователями. Так в модуле money появилась функция transfer.
«/Перевод *
14. Банк.
Итак. У пользователей есть счета, на которых хранятся их деньги, а также они могут проводить транзакции, так каким же банком они при этом пользуются? Верно, нужен банк. У банка есть свой счёт в money.json, он пополняется комиссией с транзакций, а также комиссией в 10% с каждого проигрыша игрока в монетку или кубик. Теперь в модуле money нужно создать функцию bank.
Команда «/банк» возвращает три значения: сумма на счету банка, общая сумма всех счетов (включая счёт банка) и количество клиентов.
Как известно, ничто так не мотивирует, как соревновательный дух. Следующая команда ― «топ баланс». Функция top в модуле money читает файл money.json, делает из него список пользователей и сортирует по балансу, после чего, сократив список до 10 пользователей, возвращает его Филчу, а тот оформляет его, добавляя упоминания страниц и места в топе в сообщение.
15. Профиль.
Бывает, замечаешь в чате нового пользователя, а откуда он взялся и в ум не возьмёшь. Или сам вдруг оказываешься в неизвестной беседе и не понимаешь, что ты тут вообще забыл. Для подобных случаев я добавил Филчу команду «кто меня добавил» или «кто добавил *
Иногда просто нужно быстро получить краткую информацию о профиле, не выходя из чата. Тогда на помощь придёт одна из данных команд Филча: «кто я», «кто ты»(при ответе на сообщение) и «кто ты *
При попытке получить краткую информацию о профиле пользователя, бот присылает сообщение, в котором содержатся: имя (упоминание), статус, указанный на странице, баланс пользователя, если он имеет счёт в банке Филча, дата рождения, если она не скрыта, статус онлайн, информация о прослушиваемой в данный момент композиции, а также сама аудиозапись, если она транслируется на страницу, и дата создания страницы в ВК. Остановимся подробнее на последнем, ибо оно добывается отдельно от общего метода users.get. Дата создания страницы добывается путём парсинга lxml (вновь requests и bs4) по адресу https://vk.com/foaf.php?id=
Если же речь идёт о сообществе, то используется другой метод вк, а именно groups.getById. В сообщение с информацией о сообществе он возвращает: название сообщества, статус, количество подписчиков, контакты, указанные в сообществе, дата основания сообщества, если оно является публичной страницей и дата основания указана, а также информация об аудио и сама аудиозапись в виде вложения, если она транслируется в статус сообщества.
Вывод: за искусственным интеллектом будущее. Моя работа еще требует усовершенствования, но показывает, что нет ничего невозможного. Пользовательский сценарий использования, вероятно, ещё будет скорректирован, однако, мой бот выполняет основной функционал. Он умеет: отвечать не только текстом, но и стикерами; преобразовывать текст и отправлять сообщения; показывает погоду; умеет вкладывать в сообщения музыку и фотографии; показывает онлайн чата, умеет шутить; знает цитаты, владеет фактами; умеет играть в «крокодила»; выдавать ежедневный бонус в игровой валюте и сообщать сколько времени осталось до получения следующего ежедневного бонуса; позволяет сыграть на игровые деньги в игры «монетка» и «кубик»; может сделать перевод денег от отправителя к получателю; следит за банком, где хранятся средства пользователей; может узнать, кто добавил пользователя в чат; может выдать краткую информацию о профиле пользователя. (Приложение. Изображения 1-15)
Уже сейчас чат-боты являются верными помощниками людей. Их возможности невероятно обширны, а функционал зависит лишь от фантазии разработчика (и потребностей пользователей). Один бот может забронировать билет на самолёт или поможет записаться на услугу, другой поможет найти книги в электронном формате или сообщит о выходе новой серии любимого сериала, третий же создаст для вас QR-код по любому запросу или поможет найти вакансию, а иной просто станет для вас хорошим собеседником.
Так или иначе, все они созданы лишь для того, чтобы сделать вашу жизнь проще, и я считаю, что они хорошо справляются с этой задачей. За ботами будущее, а если это так, я тоже хочу принять в этом участие. И, несомненно, каждый, кто хочет сделать этот мир лучше, может прямо сейчас начать изучать программирование и сделать свой вклад в лучшее будущее для человечества.
ЗАКЛЮЧЕНИЕ
Изобретение языков программирования высшего уровня, а также их постоянное совершенствование и развитие, позволило человеку не только общаться с машиной и понимать ее, но использовать ЭВМ для сложнейших расчетов в области самолетостроения, ракетостроения, медицины и даже экономики.
История языков программирования увлекательна. Кто бы мог подумать, что алгоритм середины 19 века проложит путь для технологического общества, в котором мы живем сегодня. От ранних машинных кодов до сложного, удобночитаемого кода, на котором сегодня работают наши любимые технологии, языки программирования прошли долгий путь. Несомненно, компьютерное программирование продолжит развиваться, как это происходило в течение последних 150 лет, и интересно смотреть, что принесет будущее.
Совсем недавно компьютерное программирование казалось таинственным ремеслом, уделом специалистов. Мысль о том, что программирование может быть увлекательным занятием для каждого, большинству людей и в голову не приходила. Но мир изменился. Интернет, электронная почта, социальные сети, смартфоны и мобильные приложения, ураганом влетев в нашу жизнь, преобразили ее всего за несколько лет.
Известный автор-фантаст ХХ века Артур Кларк сказал, что «любая достаточно развитая технология неотличима от магии». Программирование действительно можно сравнить с волшебством, но только пока не научишься творить его сам.
Я выполнил задачи, которые наметил себе перед написанием данной работы. Нашел и изучил литературные источники, которые стали основой проекта. Узнал историю развития языков программирования. Выделил наиболее распространенные языки программирования. Провел анализ языков программирования для составления их классификации. Выбрал программу для написания бота. Изучил основные аспекты по работе ботов в сети Интернет. Создал собственного бота со своим функционалом. Активировал его. Подготовил презентацию проекта.
Цель проекта «Человек и машина. Общий язык» достигнута. Я проследил историю возникновения языков программирования от начальных этапов до наших дней и создал собственного Бота в VK.
Учиться программировать очень интересно, ведь ты можешь получить результаты сразу же, и не важно, сколько еще материала предстоит изучить. Мой проект доказывает, что даже школьник, не имеющий пятерки по математике, может создавать свои программные продукты.
Результат проекта меня полностью удовлетворяет, поскольку я не только достиг поставленной цели, но и приобрел новые ценные знания, которыми можно будет делиться с другими и применять самому.
СПИСОК ЛИТЕРАТУРЫ
Список источников и литературы
Интернет-ресурсы
ПРИЛОЖЕНИЕ

Изображение 1 Изображение 2

Изображение 3 Изображение 4

Изображение 5 Изображение 6

Изображение 7 Изображение 8

Изображение 9 Изображение 10

Изображение 11 Изображение 12

Изображение 13 Изображение 14

Изображение 15

Астрономы наблюдают за появлением планеты-младенца

Что есть на свете красота?

Алые паруса

Солнечная система. Взгляд со стороны

Сказки пластилинового ослика