C# (также C Sharp и C♯[1]) — язык программирования, разработанный в компании Microsoft. Является одним из языков программирования, который используется для работы с ботами.
Характеристика[]
C# является объектно-ориентированным языком программирования и относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и в особенности Java, С# при этом отказывается от некоторых проблематичных моделей (нельзя использовать множественное наследование классов, которое может привести к семантической неопределённости).
На данный момент актуальная версия языка — C# 7.0, но в рамках рассматриваемого ниже программного обеспечения используется более старая версия — C# 3.0.
- Невысокий порог вхождения: для новичков данный язык программирования является одним из самых перспективных.
- Большое количество «синтаксического сахара» — конструкций, которые созданы для облегчения написания и понимания кода.
- Присутствует возможность работать с памятью напрямую (что, впрочем, может быть и минусом).
- Высокая популярность языка и большое сообщество разработчиков.
Минусы:
- C# ориентирован в основном на .NET-платформу, а значит — операционные системы Windows.
- Присутствует оператор GOTO, использование которого считается дурным тоном, так как может приводить к серьёзному усложнению понимания кода (вплоть до того, что провести анализ кода становится практически невозможно).
- C# проигрывает в производительности своим предшественникам — C и C++.
Синтаксис языка является достаточно простым в освоении. Классический пример программы с Hello, world! может выглядеть так:
using System;
namespace Example
{
class Program
{
static void Main()
{
Console.WriteLine("Hello World!"); // Вывод заданного текста в консоль
Console.ReadKey(); // Ожидание нажатия клавиши пользователем
}
}
}
Использование[]
С использованием данного языка программирования было написано следующее программное обеспечение:
- AutoWikiBrowser — одна из самых известных программ для ботов, также поддерживает дополнительные модули и плагины на C#.
- DotNetWikiBot — фреймворк для работы MediaWiki-проектами.
AutoWikiBrowser[]
Как уже было сказано ранее, программа написана на языке программирования C# с использованием .NET Framework 3.5 (который необходим для работы приложения).
В AutoWikiBrowser’е используются следующие библиотеки (набор классов, содержащих определённый код):
- WikiFunctions — библиотека, содержащая большое количество разнообразных классов. Содержит в себе обширный функционал для самых разных моментов при работе с программой — методы для входа в аккаунт, генерация списков, форматирование текста для дальнейшей работы и многое другое.
- Newtonsoft.JSON — библиотека, предназначенная для формирования JSON (текстовый формат обмена данными, основанный на JavaScript) и дальнейшей работы с ним, например его преобразования или валидации.
Плагины[]
AutoWikiBrowser позволяет загружать дополнительные плагины, которые дают новые возможности при использовании программы. При скачивании последней версии AWB из официального репозитория[2] в отдельной папке уже есть несколько плагинов. Для того чтобы их использовать, нужно или поместить их в папку, где осуществляется запуск AWB, либо же через приложение выбрать нужные для загрузки плагины.
При необходимости участник может сам написать необходимый ему плагин. Для этого участнику понадобится среда разработки, которая поддерживает C# (например Visual Studio), а также библиотека WikiFunctions. Подробную инструкцию можно найти здесь.
Модули[]
Если оператору бота необходимо реализовать свой способ обработки статей, он может использовать модули. Оператору необходимо написать свой код (на языке C# 3.5 или VB .NET 2.0), который будет по-своему изменять текст статьи. По умолчанию модуль содержит следующий код:
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
{
Skip = false;
Summary = "test";
ArticleText = "test \r\n\r\n" + ArticleText;
return ArticleText;
}
Ключевым в данном коде является метод ProcessArticle, на вход которому подаётся текст статьи (ArticleText), её название (ArticleTitle), номер пространства имён (wikiNamespace). Внутри метода мы можем задать описание правки (используя параметр Summary) и указать, нужно ли пропустить данную статью, или нет (используя параметр Skip). В результате работы будет сформирован новый текст статьи на основе старого (в примере выше в самом начале будет добавлено слово test и два переноса строки) и передан на последующие этапы обработки.
DotNetWikiBot[]
DotNetWikiBot — фреймворк, позволяющий помочь со многими сложными и рутинными задачами разработки и обслуживания сайтов вики. Он также написан на C#, но, в отличие от AutoWikiBrowser, не является полноценным приложением.
После скачивания DotNetWikiBot’a в папке находятся несколько интересующих нас файлов с кодом на C#:
- BotScript.cs — файл, который содержит в себе код для непосредственного запуска работы бота;
- DotNetWikiBot.cs — содержит в себе исходный код фреймворка. В случае необходимости это позволяет собрать заново библиотеку DotNetWikiBot.dll и использовать её так, как захочет автор изменений;
- BatchFileUploader.cs — файл, который содержит в себе код для работы BatchFileUploader.exe — приложения для загрузки файлов.
Для того чтобы осуществить запуск бота, нужно изменить файл BotScript.cs, а затем запустить скрипт Compile & Run.bat (если используется Mono, то нужно запустить Compile & Run (Mono).bat).
В самом простом случае код в BotScript.cs выглядит так:
using DotNetWikiBot;
class MyBot : Bot
{
public static void Main()
{
Site enWiki = new Site("http://en.wikipedia.org", "myBotLogin", "myPassword");
Page p = new Page(enWiki, "Art");
p.Load();
p.AddToCategory("Visual arts");
p.Save("comment: category link added", true);
}
}
В DotNetWikiBot используются три новых типа данных: Site (для адреса википроекта и данных бота), Page (для отдельной страницы вики) и PageList (для списка страниц).
Рассмотрим подробнее метод Main:
- Сначала указывается адрес википроекта, где мы будем осуществлять правки, а затем вводятся логин и пароль от аккаунта бота.
- Создаётся новый объект с типом Page, а также указывается адрес и название страницы.
- Происходит загрузка информации о странице.
- Идёт добавление категории.
- После этого страница сохраняется на википроекте (в описании правки будет добавлен комментарий).
Более подробную документацию и примеры использования можно найти в репозитории, где есть отдельный тестовый класс для проверки функций DotNetWikiBot.
Интересные факты[]
- Название «Си шарп» (от англ. sharp — диез) происходит от буквенной музыкальной нотации, где латинской букве C соответствует нота До, а знак диез (англ. sharp) означает повышение соответствующего ноте звука на полутон. Название также является отсылкой к цепочке C — C++ — C++++(C#), так как символ «#» можно представить состоящим из 4 знаков «+».
- Для написания кода AutoWikiBrowser использовалась среда разработки Microsoft Visual C# Express Edition, которая доступна для бесплатного скачивания и имеет ограниченный функционал по сравнению с платной версией.
- И в AutoWikiBrowser, и в DotNetWikiBot используется .NET Framework 3.5. Это позволяет использовать не только C#, но и другие .NET-языки — модули в AutoWikiBrowser можно также писать на VB.NET 2.0, а для использования DotNetWikiBot можно использовать ещё и Managed C++, JScript, J#, F#.
Примечания[]
- ↑ Статья названа C Sharp, а не C#, поскольку технические возможности движка MediaWiki не позволяют создать страницу с октоторпом в названии. Вариант C♯, несмотря на то что слово sharp указывает именно на диез, в профессиональном жаргоне встречается редко.
- ↑ Репозиторий AutoWikiBrowser
Языки разметки и программирования | ||
---|---|---|
Основные | HTML • Викиразметка (Теги) | |
Специализированные | CSS • JavaScript • Lua • TeX • Разметка фильтра злоупотреблений | |
Для работы с ботами | Bash • C/C Sharp/C++ • Go • Haskell • Java • JScript • Lisp • Microsoft .NET • Perl • PHP • Python • Ruby | |
См. также: устройство и технология википроектов и участников |