Перейти к содержимому

Как сделать свой первый проект в программировании

  • автор:

Создание проекта консольного приложения С++

Обычно программист C++ начинает с создания приложения «Hello, world!», которое запускается из командной строки. Это то, что вы создаете в Visual Studio на этом шаге.

Необходимые компоненты

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

Создание проекта приложения

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

Screenshot of the create a new project dialog.

  1. В Visual Studio откройте меню «Файл» и выберите «Создать > проект «, чтобы открыть диалоговое окно «Создать проект «. Выберите шаблон Консольное приложение с тегами C++, Windows и Консоль, а затем нажмите кнопку Далее.

Диалоговое окно создания проекта с выбранным шаблоном консольного приложения. Этот шаблон говорит: запуск кода в терминале Windows. По умолчанию выводит hello world. Содержит теги c++, Windows и консоль.

Screenshot of Configure your new project dialog.

В диалоговом окне Настроить новый проект в поле Имя проекта введите HelloWorld. Выберите Создать, чтобы создать проект.

Диалоговое окно «Настройка нового проекта» с помощью HelloWorld, введенного в поле «Имя проекта».

Screenshot of the NEW Hello World project.

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

Отображает новый проект. Файл HelloWorld.cpp открыт, отображая код по умолчанию, включенный в этот шаблон. Этот код состоит из #include iostream и функции main(), содержащей строку: std::cout helloworld.sln файл) в проводник.

Если в диалоговом окне Новый проект в списке Установленные нет элемента Visual C++, возможно, в вашей копии Visual Studio не установлена рабочая нагрузка Разработка классических приложений на C++. Установщик можно запустить прямо из диалогового окна Новый проект. Чтобы снова запустить установщик, щелкните ссылку Открыть Visual Studio Installer. Если в диалоговом окне Контроль учетных записей пользователей запрашиваются разрешения, выберите Да. При необходимости обновите установщик. В установщике должна быть выбрана рабочая нагрузка Разработка классических приложений на C++. Нажмите кнопку ОК, чтобы обновить установку Visual Studio.

Если проект с таким именем уже существует, выберите другое имя для проекта. Можно также удалить существующий проект и повторить попытку. Чтобы удалить существующий проект, удалите папку решения (папку, содержащую helloworld.sln файл) в проводник.

Настройка проекта как консольного приложения: проблемы

Если в списке Свойства конфигурации нет элемента Компоновщик, нажмите кнопку Отмена, чтобы закрыть диалоговое окно Страницы свойств. Перед повторной попыткой убедитесь в том, что в обозревателе решений выбран проект HelloWorld. Не выбирайте решение HelloWorld или другой объект в обозревателе решений.

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

Добавление файла исходного кода: проблемы

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

Если вы добавили в проект файл неправильного типа, например файл заголовка, удалите его и повторите попытку. Чтобы удалить файл, выберите его в обозревателе решений. Затем нажмите клавишу DELETE.

Добавление кода в файл исходного кода: проблемы

Если вы случайно закрыли окно редактора с файлом исходного кода, его можно легко открыть снова. Чтобы сделать это, дважды щелкните файл HelloWorld.cpp в окне обозревателя решений.

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

10 способов научиться программировать самостоятельно

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

10 способов научиться программировать самостоятельно

Cколько стоят курсы Coursera и можно ли учиться бесплатно? Рассказываем

Как научиться программировать? Начните с малого… и будьте терпеливы

Независимо от выбора языка или метода обучения, вам следует начать с самого начала. Когда Дэвид Сински (David Sinsky) научился программировать за восемь недель, потратив одни выходные на изучение основ Python, а другие, к примеру, на Django. Взяв учебник, он удалял написанный код и снова проходил материал с нуля.

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

Python-хокку и Data Science для карьериста: 15 новых книг о разработке

Начать программировать можно с приложения для детей

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

Не имеет значения, сколько вам лет — даже детские анимационные приложения могут научить основам программирования. А у edX есть курс обучения по Scratch.

Популярные бесплатные курсы по разработке на dev.ИТ-курсы

Пройдите онлайн-курс

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

Такие курсы предназначены для обучения основным навыкам в течение нескольких месяцев на занятиях университетского уровня. Один из лучших — гарвардский онлайн-курс CS50 на edX. Кстати, его можно пройти бесплатно.

11 лучших сертификаций Coursera чтобы освоить новую специальность (август 2023)

Бесплатные книги по программированию

Если вы застряли на какой-то проблеме или вам нужно найти ответ на свой вопрос, не стоит забывать о справочниках. На GitHub можно найти коллекцию из более чем 500 бесплатных книг по программированию. Там же есть и электронные книги, охватывающая 24 языка программирования.

Повысить свою эффективность: чтение от директора по продукту Google

Изучайте, играя

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

Некоторые обучающие сайты сами являются играми: Code Combat и CodinGame — инструменты, используя которые вы сможете и весело провести время, и научиться новым навыкам в IT.

Обучение через познание: 10 игровых платформ для начинающих программистов

Найдите наставника или станьте им

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

Разберите чужой код

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

Только не забудьте поделиться своим кодом, если вам удастся улучшить часть ПО.

Как спланировать и создать собственный проект

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

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

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

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

Чтобы преодолеть эту проблему, я написал о ней в популярном сабреддите r/learnprogramming. Все комментаторы советовали мне сосредоточиться на создании моих собственных проектов.

На первый взгляд этот совет кажется прекрасным и правильным. Но моя проблема заключалась в том, что я даже не мог просмотреть руководство и затем самостоятельно воспроизвести то, что там делалось. Где уж мне самому осилить проект? Это в десять раз сложнее, чем повторить то, что увидел в туториале. Мне казалось, что мне это вообще не по силам. Я понятия не имел, с чего хотя бы начать, не говоря уже о том, как собрать потом все это воедино.

По сути, проблема заключалась в том, что я не знал, как добраться из пункта А в пункт Б.

Я часто встречаю посты на эту же тему на r/learnprogramming. Начинающие вроде меня расстраиваются из-за того, что не могут выбраться из ада туториалов, и поэтому обращаются за советом. Но всем, как и мне, просто бросают совет заняться собственными проектами. Люди не задумываются над тем, что если новичок не может даже воспроизвести учебник, создать свой собственный проект для него будет реальной проблемой.

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

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

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

Шаг 1. Определение проекта

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

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

Определяя проект, я задаю себе четыре вопроса:

  • Что собой представляет этот проект?
  • Что собой представляет MVP (минимально жизнеспособный продукт)?
  • Какая будет «посыпка»?
  • Когда проект можно считать законченным?
Сначала пончик (MVP), посыпка — потом

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

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

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

Пример определения проекта

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

Проект «Калькулятор»
  • Чтособой представляет этотпроект? «Калькулятор» — это проект по созданию калькулятора, доступного в браузере. Проект будет реализован с использованием HTML, CSS и JavaScript. Это позволит пользователям вводить числа и вычислять результаты выбранной ими арифметической операции.
  • Чтособой представляетMVP? Минимальный жизнеспособный продукт — это калькулятор, который отображается в браузерах и может выполнять операции сложения, вычитания, умножения и деления на основе ввода пользователя и показывать пользователю результат вычислений.
  • Какая будет «посыпка»? В этом проекте «посыпка» — это стилизация калькулятора. Также к «посыпке» относится возможность для пользователя нажимать цифры и арифметические знаки на клавиатуре, а не только кликать по кнопкам на экране. Еще можно добавить операции более высокого порядка, такие как возведение в степень.
  • Когда проектможно считать законченным? Проект будет завершен после реализации всех функций MVP и оформления калькулятора.

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

Определяя проект, вы делаете его менее устрашающим.

Когда у вас есть определение, можно приступить к следующему шагу.

Шаг 2. Создание рабочего процесса

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

Для начала нужно использовать что-то вроде Trello — бесплатного инструмента для управления проектами.

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

Чтобы настроить нашу канбан-доску, создаем 4 столбца:

  1. TODO (нужно сделать)
  2. DOING (в процессе)
  3. DONE (сделано)
  4. BUGS / NOT SURE HOW TO DO (баги / не уверен, как это сделать)

В эти столбцы мы будем добавлять карточки. Мы создаем карточку в столбце TODO, затем, взявшись за выполнение, перемещаем ее в столбец DOING, а покончив с ней — в столбец DONE. Если вы столкнулись с какой-то ошибкой, на которой застряли, или не знаете, как что-то сделать, можно переместить карточку в столбец BUGS / NOT SURE HOW TO DO.

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

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

Шаг 3. Разбивка проекта на более мелкие компоненты

Ключ к созданию собственных проектов — разбиение большого проекта на более мелкие и менее пугающие компоненты. Эти компоненты становятся нашими карточками в Trello.

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

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

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

Начальная разбивка

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

Давайте продолжим использовать пример с калькулятором для создания карточек компонентов:

  1. Вычислительные функции — MVP
  2. Получение пользовательского ввода — MVP
  3. HTML пользовательского интерфейса — MVP
  4. Стилизация пользовательского интерфейса (CSS) — посыпка
  5. Слушатели событий JavaScript — MVP
  6. Добавление анимации для вычислений — посыпка

Обратите внимание, что каждой карточке мы присвоили метку MVP или «посыпка», чтобы было ясно видно, какие карточки являются наиболее важными. Над ними, естественно, нужно работать в первую очередь.

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

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

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

Разбейте каждый компонент на более мелкие чеклисты

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

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

Для примера дальнейшей разбивки компонента давайте воспользуемся карточкой «Вычислительные функции».

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

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

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

Выполнив все четыре пункта, мы можем переместить эту карточку в столбец «DONE» и взяться за следующую.

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

Не застряньте, доводя все до совершенства

Занимаясь карточками и задачами в них, не застряньте на бесконечном доведении до идеала каждой маленькой детали.

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

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

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

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

Вы также можете использовать столбец BUGS / NOT SURE HOW TO DO, чтобы поместить туда карточки, которые вы еще не можете выполнить или на которых вы застряли. Это поможет вам продолжать двигаться.

Начните создавать собственный проект

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

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

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

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

Пет-проект как один из лучших вариантов практического обучения начинающего программиста

О пет-проектах знают на Хабре многие. У кого-то такой проект крайне сложный, у кого-то попроще. И разрабатываются такие проекты с разной целью — от just for fun до обучения или доказать самому себе — «Я могу». На самом деле, пет-проекты — отличный вариант для практического обучения начинающих программистов. Да и опытные профессионалы, освоив новую технологию, тоже часто делают на базе полученных знаний что-то новое, чтобы закрепить в памяти и получить новый навык. Но максимальный профит от домашних проектов всё же получают новички. Кстати, эта статья — именно для начинающих разработчиков.

Почему пет-проект — хороший вариант для обучения?

Дело в том, что большинству работодателей, за малым исключением, нужны программисты с опытом, пусть и начинающие. Если опыта нет, в плане работы над какими-то проектами в компании, то пет-проект может послужить дополнительной строкой в разделе «Опыт» своего портфолио. При этом сделать можно практически любой проект, соответствующий профилю специалиста, — от чат-бота до 3D-модели.

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

Кроме портфолио, проект поможет закрепить полученные из книг/YouTube/курсов и форумов знания. Если это первый или второй ваш проект, то отдельные кусочки теории начнут постепенно складываться в единое целое, после чего станет понятно, где и как применять всё это на практике.

Как начать работу?

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

Далее нужно на бумаге или в электронном виде расписать свою идею подробно.

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

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

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

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

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

Можно также попробовать поработать в команде — снова-таки, это если проект комплексный. Разработали веб-сервис? Друг-дизайнер может продумать и реализовать удобный интерфейс к нему.

Какими могут быть пет-проекты?

Как и говорилось выше, в принципе, любыми. Но лучше всего сделать что-то такое, что можно «потрогать».

Мини-игра

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

Специфический сервис

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

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

Интернет-магазин

Его можно сделать для себя и затем заниматься бизнесом, продавая, например, сделанные при помощи лазерного гравера брелоки, визитные карточки, конструкторы и т. п. Здесь двойной профит — и небольшая прибыль, и строка о проекте в своём портфолио.

Приложение для нумизмата или библиофила

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

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

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

  • diy
  • diy или сделай сам
  • diy-проекты
  • обучение
  • обучение программированию
  • программирование
  • пет-проект
  • технологии
  • Блог компании МТС
  • Программирование
  • Учебный процесс в IT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *