Forráskód Böngészése

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 2 hete
szülő
commit
c7293c1ce3

+ 27 - 0
Лекции/CSharp/Titov2.md

@@ -0,0 +1,27 @@
+# Язык C# и среда .NET
+
+C# (произносится "Си шарп") - это язык программирования с синтаксисом, подобным языку C, разработанный компанией Microsoft и функционирующий в рамках управляемой среды выполнения - общеязыковой исполняющей среды. Архитектурно C# является наследником идей C++ и Java, но с рядом значительных улучшений в области типобезопасности и подходов к программированию. Одним из ключевых нововведений стала глубокая интеграция языка с компонентно-ориентированной моделью разработки, что выражается в наличии таких конструкций, как свойства, события и атрибуты, которые позволяют описывать поведение компонентов декларативно.
+
+Ключевое различие между C# и Java кроется в тесной интеграции языка с платформой .NET. Если Java изначально создавался как платформа для предприятий, то C# развивался как инструмент для всей экосистемы Windows, а после появления базовой платформы .NET (ныне .NET 5+) стал полностью кроссплатформенным решением с открытым исходным кодом. Это позволяет разрабатывать приложения для Windows, Linux, macOS, мобильных устройств и игр на едином наборе технологий. Более того, единая среда выполнения позволяет использовать несколько языков в одном проекте: например, написать логику на C#, а отдельные модули на F#.
+
+С точки зрения синтаксиса, C# предлагает разработчику более широкие возможности, чем классическая Java. Например, здесь присутствуют свойства как языковая конструкция, включающая методы доступа, типы-значения в дополнение к ссылочным типам, а также делегаты - типобезопасные указатели на методы, лежащие в основе событийной модели. Кроме того, C# поддерживает перегрузку операторов, что позволяет определять поведение стандартных операторов для пользовательских типов, и индексаторы, дающие возможность обращаться к объектам как к массивам.
+
+*Таблица 1. Сравнение синтаксических конструкций*
+
+| Конструкция | Назначение | Преимущество |
+| -------- | -------- | -------- |
+| Делегаты | Указатели на методы с проверкой типов | Обработка событий, обратные вызовы |
+| Свойства | Включение полей с логикой доступа | Чистота кода, контроль доступа |
+| LINQ | Встроенные языковые запросы | Единый синтаксис запросов к разным источникам |
+
+
+
+Ключевой особенностью, упрощающей жизнь начинающим, является встроенный язык запросов LINQ. LINQ позволяет писать описательные запросы к коллекциям, базам данных или XML, используя синтаксис, похожий на язык запросов, но встроенный прямо в код C#. Это снижает мыслительную нагрузку при переходе от работы с табличными данными к объектным моделям в коде. Например, фильтрация списка объектов выполняется одной строкой кода вместо целого цикла с условиями, что делает код более читаемым и менее подверженным ошибкам. LINQ работает с любым типом, реализующим интерфейс IEnumerable, что делает его универсальным инструментом.
+
+![](tit1.jpg)
+
+Важно понимать, что LINQ бывает двух видов: LINQ to Objects для работы с коллекциями в памяти и LINQ to Entities для работы с базами данных через технологию Entity Framework. Во втором случае запросы не выполняются в клиентской памяти целиком, а преобразуются в SQL-запросы и выполняются на стороне сервера баз данных. Это позволяет эффективно работать с большими объемами данных, не загружая их полностью в оперативную память. Разработчику не нужно знать тонкости SQL для каждой конкретной базы данных - LINQ предоставляет единый интерфейс.
+
+Современные версии C# (начиная с 8.0 и выше) продолжают развиваться, добавляя новые возможности, такие как ссылочные типы, допускающие null (для борьбы с ошибками нулевых ссылок), асинхронные потоки для работы с последовательностями данных, поступающих асинхронно, и шаблоны свойств для более выразительного сопоставления с образцом. Эти нововведения делают язык еще более безопасным и удобным, позволяя выражать сложные концепции лаконично и понятно.
+
+Таким образом, изучение C# дает понимание не только синтаксиса языка, но и устройства управляемой среды выполнения (сборка мусора, своевременная компиляция, система типов, метаданные и сборки). Это фундаментальные знания, применимые и при работе с Java, что делает C# отличным выбором для погружения в промышленную разработку. Кроме того, знание C# открывает путь к разработке под широкий спектр платформ: от веб-приложений на ASP.NET Core до настольных приложений на Windows Forms и WPF, мобильных приложений на Xamarin/MAUI и игр на движке Unity, который является одним из самых популярных игровых движков в мире.

BIN
Лекции/CSharp/tit1.jpg


+ 88 - 0
Лекции/Digital Extremes/Digital Extremes.md

@@ -0,0 +1,88 @@
+**Digital Extremes** — частная компания, которая специализируется на разработке компьютерных игр, основанная в 1993 году Джеймсом Шмальцем. Компания имеет два производственных офиса, находящихся в провинции Онтарио в Канаде: первый (и основной) — в городе Лондон; и второй (ранее известный как дочернее подразделение Brainbox Games) — в городе Торонто. Компания наиболее известна благодаря созданию Warframe и Soulframe, BioShock и BioShock 2 разработанных в тандеме с Epic Games.
+
+![лого.jpg](лого.jpg)
+
+**История компании**
+
+Компания основана в 1993 году Джеймсом Шмальцом (англ. James Schmalz). Первой разработкой стала компьютерная игра Epic Pinball в жанре пинбола, разработанная для компании Epic MegaGames (сейчас Epic Games). Затем, в 1993 году была выпущена Silverball, первая совместная разработка с Epic MegaGames, также выполненная в жанре пинбола.
+
+В 1995 году была выпущена Extreme Pinball, вышедшая как для персонального компьютера под управлением DOS, так и для игровой приставки PlayStation (позднее была переиздана для PlayStation 3).
+
+В 1998 году состоялся релиз игры Unreal, созданной совместно с Epic Games. Данная игра, выполненная в жанре трёхмерного шутера от первого лица, и построенная на одном из самых мощных игровых движков того времени, Unreal Engine, была высоко оценена игроками и различными специализированным изданиями.
+
+Спустя год, в 1999 году, был выпущен шутер Unreal Tournament, ориентированный более на сетевую игру, нежели на одиночное прохождение. Данная игра также получила преимущественно высокие оценки прессы.
+
+2001 год ознаменовался выходом игры Adventure Pinball: Forgotten Island, выполненной в жанре пинбола, как первые игры студии, но базируясь уже на игровом движке Unreal Engine, задействованном прежде в Unreal и Unreal Tournament. Изданием занималась компания Electronic Arts, а целевыми платформами выбраны персональный компьютер и консоли Xbox и PlayStation 2.
+
+В 2002 году состоялся выход игры Unreal Championship, сетевого шутера, созданного специально для игровой консоли Xbox. Разработка велась совместно с Epic Games.
+
+Кроме того, в 2002 и 2004 годах соответственно, были выпущены многопользовательские шутеры Unreal Tournament 2003 и Unreal Tournament 2004. Данные игры стали последними проектами студии, созданными совместно с Epic Games, позднее компания Digital Extremes работала полностью самостоятельно.
+
+Также в 2003 году в Торонто была основана Brainbox Games, команда внутри Digital Extremes выпустившая несколько низкобюджетных игр, в числе которых Desert Thunder и Land of the Dead: Road to Fiddler's Green. Позднее она превращена во второй производственный офис, часто именующийся Digital Extremes Toronto (в то же время первый офис именуют как Digital Extremes London).
+
+В 2005 году вышел трёхмерный шутер Pariah, выполненный в научно-фантастической стилистике и базирующийся на движке Unreal Engine 2.5. Спустя год состоялся релиз сетевого шутера WarPath.
+
+В 2008 году была выпущена игра Dark Sector, построенная на собственном движке и находившаяся в разработке несколько лет. Кроме того, в том же году студия отвечала за портирование игры BioShock на консоль PlayStation 3, а в 2010—2011 годах работала над многопользовательской частью игры BioShock 2 и портированием шутера Homefront на ПК.
+
+В 2012 году была выпущена игра The Darkness 2. Первая часть была создана шведской студией Starbreeze Studios. В этом же году компания анонсировала многопользовательский шутер Warframe, выпущенный в 2013 году. Warframe — одна из самых популярных free-to-play игр на данный момент.
+
+Digital Extremes сотрудничает с организацией TechAlliance, принимая учащихся средней школы, чтобы дать им возможность в рамках профориентации пообщаться с сотрудниками компании.
+
+Для игры Dark Sector был разработан собственный игровой движок Evolution Engine, который доступен для покупки другим студиям. Впоследствии, подвергаясь улучшениям и доработкам, он был применен и в других играх компании.
+
+**Разработанные игры:**
+
+1993 — Epic Pinball
+
+1993 — Silverball (совместно с Epic Games)
+
+1995 — Extreme Pinball (совместно с Epic Games)
+
+1998 — Unreal (совместно с Epic Games)
+
+1999 — Unreal Tournament (совместно с Epic Games)
+
+2001 — Adventure Pinball: Forgotten Island
+
+2002 — Unreal Championship (совместно с Epic Games)
+
+2002 — Unreal Tournament 2003 (совместно с Epic Games)
+
+2004 — Unreal Tournament 2004 (совместно с Epic Games)
+
+2005 — Pariah
+
+2006 — WarPath
+
+2008 — Dark Sector
+
+2008 — BioShock (только портирование на PlayStation 3)
+
+2010 — BioShock 2 (многопользовательская часть)
+
+2011 — Homefront (только портирование на ПК)
+
+2012 — The Darkness 2
+
+2013 — Warframe
+
+2013 — Star Trek
+
+2015 — D&D: Sword Coast Legends (совместно с n-Space)
+
+2017 — The Amazing Eternals
+
+TBD (скоро анансируют) — Soulframe
+
+**Разработанные Brainbox Games**
+
+2003 — Desert Thunder
+
+2004 — Marine Heavy Gunner: Vietnam
+
+2005 — Land of the Dead: Road to Fiddler's Green
+
+2009 — Day of the Zombie
+
+**Изданные**
+2018 — Survived By

BIN
Лекции/Digital Extremes/лого.jpg


BIN
Лекции/HTML/PowerShell 1.png


BIN
Лекции/HTML/PowerShell 10.png


BIN
Лекции/HTML/PowerShell 11.png


BIN
Лекции/HTML/PowerShell 12.png


BIN
Лекции/HTML/PowerShell 2.png


BIN
Лекции/HTML/PowerShell 3.png


BIN
Лекции/HTML/PowerShell 4.png


BIN
Лекции/HTML/PowerShell 5.png


BIN
Лекции/HTML/PowerShell 6.png


BIN
Лекции/HTML/PowerShell 7.png


BIN
Лекции/HTML/PowerShell 8.png


BIN
Лекции/HTML/PowerShell 9.png


+ 187 - 0
Лекции/HTML/PowerShell.md

@@ -0,0 +1,187 @@
+**Что такое Windows PowerShell и с чем его едят? Основные возможности**
+
+Windows PowerShell позволяет системным администраторам автоматизировать большинство рутинных задач. С ее помощью можно менять настройки, останавливать и запускать сервисы, а также производить обслуживание большинства установленных приложений. Воспринимать синее окошко как еще один интерпретатор команд было бы неправильно. Такой подход не отражает сути предложенных корпорацией Microsoft инноваций. На самом деле возможности Windows PowerShell гораздо шире: в небольшом цикле статей мы попробуем разобраться, чем решение Microsoft отличается от более привычных нам средств.
+
+**Основные возможности** 
+
+Разумеется Windows PowerShell — это в первую очередь командная оболочка с языком сценариев, изначально созданная на основе платформы .NET Framework, а позднее — на .NET Core. В отличие от принимающих и возвращающих текстовые данные оболочек, Windows PowerShell работает с классами .NET, у которых есть свойства и методы. PowerShell позволяет выполнять обычные команды, а также дает доступ к объектам COM, WMI и ADSI. В ней используются различные хранилища, вроде файловой системы или реестра Windows, для доступа к которым созданы т.н. поставщики (providers). Стоит отметить возможность встраивания исполняемых компонентов PowerShell в другие приложения для реализации различных операций, в т.ч. через графический интерфейс. Верно и обратное: многие приложения для Windows предоставляют доступ к своим интерфейсам управления через PowerShell. 
+
+**Windows PowerShell позволяет:**
+
+1)Менять настройки операционной системы;
+
+2)Управлять службами и процессами;
+
+3)Настраивать роли и компоненты сервера;
+
+4)Устанавливать программное обеспечение;
+
+5)Управлять установленным ПО через специальные интерфейсы;
+
+6)Встраивать исполняемые компоненты в сторонние программы;
+
+7)Создавать сценарии для автоматизации задач администрирования;
+
+8)Работать с файловой системой, реестром Windows, хранилищем сертификатов и т.д.
+
+
+**Оболочка и среда разработки**
+
+Существует Windows PowerShell в двух ипостасях: помимо эмулятора консоли с командной оболочкой есть интегрированная среда сценариев (Integrated Scripting Environment — ISE). Чтобы получить доступ к интерфейсу командной строки достаточно выбрать соответствующий ярлык в меню Windows или запустить powershell.exe из меню «Выполнить». На экране появится синее окошко, заметно отличающееся по возможностям от допотопного cmd.exe. Там есть автодополнение и другие фишки, привычные пользователям командных оболочек для Unix-систем.
+
+![PowerShell 1.png](PowerShell 1.png)
+
+**Для работы с оболочкой нужно запомнить некоторые сочетания клавиш:**
+
+Стрелки вверх и вниз прокручивают историю для повтора ранее набранных команд;
+Стрелка вправо в конце строки перенабирает предыдущую команду посимвольно;
+Ctrl+Home удаляет набранный текст от позиции курсора до начала строки;
+Ctrl+End удаляет текст от курсора до конца строки.
+
+F7 показывает окно с набранными командами и позволяет выбрать одну из них. В консоли также работает выделение текста мышью, копипаст, позиционирование курсора, удаление, backspace — все как мы любим.
+
+![PowerShell 2.png](PowerShell 2.png)
+
+Windows PowerShell ISE является полноценной средой разработки с поддерживающим вкладки и подсветку синтаксиса редактором кода, конструктором команд, встроенным отладчиком и другими программистскими радостями. Если в редакторе среды разработки после имени команды написать знак дефис, вы получите в выпадающем списке все доступные параметры с указанием типа. Запустить PowerShell ISE можно либо через ярлык из системного меню, либо с помощью исполняемого файла powershell_ise.exe.
+
+![PowerShell 3.png](PowerShell 3.png)
+
+**Командлеты** 
+
+В Windows PowerShell появились т.н. командлеты (cmdlets). Это специализированные классы .NET, в которые заложена разнообразная функциональность. Именуются они по принципу «Действие-Объект» (или «Глагол-Существительное, если вам так больше нравится), а разделенная дефисом связка напоминает сказуемое и подлежащее в предложениях естественных языков. Например, Get-Help буквально означает «Получить-Помощь» или в контексте PowerShell: «Показать-Справку». По сути это аналог команды man в Unix-системах и мануалы в PowerShell нужно запрашивать именно так, а не вызывая командлеты с ключом --help или /?.. Не стоит забывать и об онлайн-документации по PowerShell: у Microsoft она достаточно подробная.
+
+Помимо Get в командлетах для обозначения действий используются и другие глаголы (и не только глаголы, строго говоря). В списке ниже мы приведем несколько примеров:
+
+Add — добавить;
+Clear — очистить;
+Enable — включить;
+Disable — выключить;
+New — создать;
+Remove — удалить;
+Set — задать;
+Start — запустить;
+Stop — остановить;
+Export — экспортировать;
+Import — импортировать.
+
+Есть системные, пользовательские и опциональные командлеты: в результате выполнения все они возвращают объект или массив объектов. К регистру они не чувствительны, т.е. с точки зрения интерпретатора команд нет разницы между Get-Help и get-help. Для разделения используется символ ‘;’, но ставить его обязательно только если в одной строке выполняется несколько командлетов. 
+
+Командлеты Windows PowerShell группируются в модули (NetTCPIP, Hyper-V и т.д.), а для поиска по объекту и действию существует командлет Get-Command. Показать справку по нему можно так:
+
+Get-Help Get-Command
+
+![PowerShell 4.png](PowerShell 4.png)
+
+По умолчанию команда отображает краткую справку, но в командлеты при необходимости передаются параметры (аргументы). С их помощью можно, например, получить детальную (параметр -Detailed) или полную (параметр -Full) справку, а также вывести на экран примеры (параметр -Examples):
+
+Get-Help Get-Command -Examples
+
+Справка в Windows PowerShell обновляется командлетом Update-Help. Если строка команд получается слишком длинной, аргументы командлета можно перенести на следующую, написав служебный символ ‘`’ и нажав Enter — просто закончить писать команду на одной строке и продолжить на другой не получится.
+
+**Ниже приведем несколько примеров распространенных командлетов:** 
+
+Get-Process — показать запущенные в системе процессы;
+Get-Service — показать службы и их статус;
+Get-Content — вывести содержимое файла.
+
+Для часто используемых командлетов и внешних утилит в Windows PowerShell есть короткие синонимы — алиасы (от англ. Alias). Например, dir — алиас Get-ChildItem. Есть в списке синонимов и аналоги команд из Unix-систем (ls, ps и т.д.), а командлет Get-Help вызывается командой help. Полный список синонимов можно посмотреть с помощью командлета Get-Alias:
+
+![PowerShell 5.png](PowerShell 5.png)
+
+**Сценарии, функции, модули и язык PowerShell**
+
+Скрипты Windows PowerShell хранятся в виде обычных текстовых файлов с расширением .ps1. Запустить их двойным кликом нельзя: нужно правой кнопкой мыши вызвать контекстное меню и выбрать пункт «Запустить в PowerShell». Из консоли придется либо указать полный путь к скрипту, либо перейти в соответствующий каталог и написать имя файла. Запуск сценариев также ограничен системной политикой, а для проверки текущих настроек можно использовать командлет Get-ExecutionPolicy, который выдаст одно из следующих значений:
+
+Restricted — запуск сценариев запрещен (по умолчанию);
+AllSigned — разрешен только запуск подписанных доверенным разработчиком сценариев;
+RemoteSigned — разрешен запуск подписанных и собственных сценариев;
+Unrestricted — разрешен запуск любых сценариев.
+
+У администратора есть два варианта действий. Наиболее безопасный предполагает подписание скриптов, но это довольно серьезное колдунство — мы будем разбираться с ним в следующих статьях. Сейчас пойдем по пути наименьшего сопротивления и поменяем политику:
+
+Set-ExecutionPolicy RemoteSigned
+
+![PowerShell 6.png](PowerShell 6.png)
+
+PowerShell для этого придется запустить от имени администратора, хотя с помощью специального параметра можно изменить политику и для текущего пользователя.
+
+Пишутся скрипты на объектно-ориентированном языке программирования, команды которого именуются по тому же принципу, что и рассмотренные ранее командлеты: «Действие-Объект» («Глагол-Существительное»). Основное его предназначение — автоматизация задач администрирования, но это полноценный интерпретируемый язык, в котором есть все необходимые конструкции: условный переход, циклы, переменные, массивы, объекты, обработка ошибок и т.д. Для написания сценариев годится любой текстовый редактор, но удобнее всего запустить Windows PowerShell ISE.
+
+В скрипт можно передавать параметры, делать их обязательными, а также задавать значения по умолчанию. Кроме того Windows PowerShell позволяет создать функции и вызывать их точно так же, как и командлеты: для этого используется конструкция Function и фигурные скобки. Сценарий с функциями называется модулем и имеет расширение .psm1. Модули должны храниться в каталогах, определенных в переменных окружения PowerShell. Посмотреть их можно при помощи следующей команды:
+
+Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize
+
+**Конвейеры**
+
+В последнем примере мы применили знакомую пользователям оболочек для Unix-систем конструкцию. В Windows PowerShell вертикальная черта также позволяет передать выход одной команды на вход другой, но в реализации конвейера есть и существенная разница: речь здесь идет уже не о наборе символов или каком-то тексте. Встроенные командлеты или пользовательские функции возвращают объекты или массивы объектов, а также могут получать их на входе. Как в Bourne shell и его многочисленных последователях, в PowerShell с помощью конвейера упрощается выполнение сложных задач.
+
+**Простейший пример конвейера выглядит так:**
+
+Get-Service | Sort-Object -property Status
+
+![PowerShell 7.png](PowerShell 7.png)
+
+Сначала выполняется командлет Get-Service, а потом все полученные им службы передаются на сортировку по свойству Status командлету Sort-Object. В какой именно аргумент передается результат работы предыдущего участка конвейера, зависит от его типа — обычно это InputObject. Подробнее этот вопрос будет рассматриваться в посвященной языку программирования PowerShell статье. 
+
+При желании цепочку можно продолжить и передать результат работы Sort-Object еще одному командлету (выполняться они будут слева направо). Кстати, пользователям Windows доступна и привычная всем юниксоидам конструкция для постраничного вывода: 
+
+Get-Service | Sort-Object -property Status | more
+
+**Запуск задач в фоновом режиме** 
+
+Довольно часто бывает нужно запустить некую команду в фоне, чтобы не дожидаться результата ее выполнения в сессии оболочки. В Windows PowerShell есть несколько командлетов на такой случай:
+
+Start-Job — запуск фоновой задачи;
+Stop-Job — остановка фоновой задачи;
+Get-Job — просмотр списка фоновых задач;
+Receive-Job — просмотр результата выполнения фоновой задачи;
+Remove-Job — удаление фоновой задачи;
+Wait-Job — перевод фоновой задачи обратно в консоль.
+
+Для запуска фоновой задачи мы используем командлет Start-Job и в фигурных скобках указываем команду или набор команд:
+
+Start-Job {Get-Service}
+
+![PowerShell 8.png](PowerShell 8.png)
+
+Фоновыми задачами в Windows PowerShell можно манипулировать, зная их имена. Для начала научимся их отображать:
+
+Get-Job
+
+![PowerShell 9.png](PowerShell 9.png)
+
+Теперь покажем результат работы задания Job1:
+
+Receive-Job Job1 | more
+
+![PowerShell 10.png](PowerShell 10.png)
+
+Всё довольно просто.
+
+**Удаленное выполнение команд**
+
+Windows PowerShell позволяет выполнять команды и сценарии не только на локальном, но и на удаленном компьютере и даже на целой группе машин. Для этого существует несколько способов:
+
+У многих командлетов есть параметр -ComputerName, но таким способом не получится, например, создать конвейер;
+Командлет Enter-PSSession позволяет создать на удаленной машине интерактивный сеанс; 
+С помощью командлета Invoke-Command можно выполнять команды или сценарии на одном или нескольких удаленных компьютерах.
+
+**Версии PowerShell**
+
+С момента первого релиза в 2006 году PowerShell серьезно изменился. Инструмент доступен для множества систем, работающих на разных аппаратных платформах (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux и OS X. Последний релиз 6.2 выпущен 10 января 2018 года. Написанные для более ранних версий скрипты с высокой вероятностью будут работать в более поздних, а вот с обратным переносом могут возникнуть проблемы, поскольку за годы развития в PowerShell появилось большое количество новых командлетов. Узнать версию установленной на компьютере командной оболочки можно с помощью свойства PSVersion встроенной переменной $PSVersionTable:
+
+$PSVersionTable.PSVersion
+
+![PowerShell 11.png](PowerShell 11.png)
+
+**Также можно воспользоваться командлетом:**
+
+Get-Variable -Name PSVersionTable –ValueOnly
+
+![PowerShell 12.png](PowerShell 12.png)
+
+То же самое делается и с помощью командлета Get-Host. На самом деле вариантов множество, но для их применения нужно изучить язык программирования PowerShell.
+
+**Итоги** 
+
+Корпорации Microsoft удалось создать действительно мощную командную оболочку с удобной интегрированной средой для разработки скриптов. От привычных нам по миру Unix средств ее отличает глубокая интеграция с операционными системами семейства Windows, а также с программным обеспечением для них и платформой .NET Core. PowerShell можно назвать объектно ориентированной оболочкой, потому что командлеты и пользовательские функции возвращают объекты или массивы объектов и могут получать их на входе. Думаем, этим инструментом должны владеть все администраторы серверов на Windows: прошло время, когда они могли обойтись без командной строки. Продвинутая консольная оболочка особенно необходима на наших недорогих VPS, работающих под управлением Windows Server Core, но это уже совсем другая история.

+ 28 - 0
Лекции/Java/Titov1.md

@@ -0,0 +1,28 @@
+# Java как платформа и язык программирования
+Java в контексте современной разработки представляет собой не просто язык, а объектно-ориентированную платформу для компилируемого программирования, фундаментальной концепцией которой является выполнение кода внутри виртуальной машины (ВМ). Архитектура Java изначально проектировалась по принципу «написал однажды - запускай где угодно», что обеспечивается трансляцией исходного кода в промежуточное представление (байт-код), интерпретируемое виртуальной машиной независимо от целевой аппаратной архитектуры.
+
+С точки зрения управления памятью, Java предлагает автоматическую сборку ненужных объектов (автоматический сборщик мусора), что освобождает разработчика от необходимости ручного освобождения ресурсов, снижая риск утечек памяти. Современные виртуальные машины используют своевременную компиляцию: наиболее часто выполняемые участки байт-кода преобразуются в машинный код непосредственно во время работы программы, что обеспечивает производительность, близкую к нативным приложениям.
+
+Ключевым аспектом для начинающих является понимание строгой типизации языка. В отличие от динамических языков, Java проверяет соответствие типов на этапе компиляции, что позволяет выявлять значительную часть смысловых ошибок до момента выполнения программы.
+
+![](tit1.jpg)
+
+Базовая платформа Java (Standard Edition) предоставляет богатый набор библиотек, включая работу с коллекциями (наборы контейнеров), вводом-выводом и многопоточностью. Для начинающего разработчика важно усвоить парадигму объектно-ориентированного программирования как основу языка: инкапсуляцию (сокрытие реализации внутри классов), наследование (механизм расширения классов) и полиморфизм (возможность переопределения методов).
+
+Однако платформа не стоит на месте. Современные версии (Java 8 и выше) внедрили лямбда-выражения и потоковый интерфейс, что позволяет применять элементы функционального программирования для более лаконичной обработки данных. Это значительно упрощает написание кода для работы с большими объемами информации по сравнению с последовательными циклами, характерными для ранних версий.
+
+Таблица 1. Сравнение подходов в Java
+
+| Подход | Ключевые элементы | Пример применения |
+| -------- | -------- | -------- |
+| Объектный (классический)     | Классы, наследование, полиморфизм    | Моделирование сущностей предметной области |
+| Функциональный | Лямбда-выражения, потоки | 	Обработка коллекций, цепочки преобразований |
+
+![](tit2.jpg)
+
+Современные версии Java (8 и выше) внедрили лямбда-выражения и потоковый интерфейс, что позволяет применять элементы функционального программирования для более лаконичной обработки данных. Это значительно упрощает написание кода для работы с большими объемами информации по сравнению с последовательными циклами, характерными для ранних версий.
+
+Несмотря на многословие синтаксиса, Java остается господствующим языком в корпоративной среде благодаря своей стабильности, расширяемости и огромной экосистеме инструментов сборки и каркасов приложений (например, Spring), что делает её востребованной для изучения.
+
+
+

BIN
Лекции/Java/tit1.jpg


BIN
Лекции/Java/tit2.jpg


+ 103 - 0
Лекции/Java/titvopros.md

@@ -0,0 +1,103 @@
+## Лекция 1: Java как платформа и язык программирования
+Вопрос 1: Что лежит в основе кроссплатформенности Java?
+A) Компиляция исходного кода в машинный код для каждой платформы отдельно.
+Б) Трансляция кода в байт-код, который выполняется виртуальной машиной Java (JVM). (+)
+B) Интерпретация исходного кода напрямую операционной системой.
+
+Вопрос 2: Какой механизм в Java освобождает разработчика от ручного управления памятью?
+A) Строгая типизация.
+Б) Автоматический сборщик мусора. (+)
+B) Своевременная компиляция (JIT).
+
+Вопрос 3: Что обеспечивает своевременная компиляция (JIT) в современных JVM?
+A) Преобразование байт-кода в машинный код до запуска программы.
+Б) Проверку типов на этапе компиляции.
+B) Преобразование наиболее часто выполняемых участков байт-кода в машинный код во время работы программы. (+)
+
+Вопрос 4: Какая парадигма программирования является основой для языка Java?
+A) Функциональное программирование.
+Б) Объектно-ориентированное программирование. (+)
+B) Процедурное программирование.
+
+Вопрос 5: Какие элементы языка были добавлены в Java 8 и выше для поддержки функционального стиля программирования?
+A) Классы и интерфейсы.
+Б) Лямбда-выражения и потоковый интерфейс (Stream API). (+)
+B) Указатели и работа с памятью.
+
+## Лекция 2: Язык C# и среда .NET
+Вопрос 1: Что является исполняющей средой для программ на C#?
+A) Виртуальная машина Java (JVM).
+Б) Интерпретатор Python.
+B) Общеязыковая исполняющая среда (.NET CLR). (+)
+
+Вопрос 2: Какая ключевая особенность C# позволяет писать описательные запросы к коллекциям, базам данных или XML прямо в коде?
+A) Делегаты.
+Б) LINQ (Language Integrated Query). (+)
+B) Свойства и события.
+
+Вопрос 3: Что такое делегаты в C#?
+A) Специальные классы для работы с файлами.
+Б) Типобезопасные указатели на методы, лежащие в основе событийной модели. (+)
+B) Конструкция для определения блоков кода.
+
+Вопрос 4: Какое преимущество дает использование LINQ to Entities?
+A) Позволяет выполнять запросы быстрее, чем LINQ to Objects.
+Б) Преобразует запросы в SQL и выполняет их на стороне сервера БД, не загружая все данные в память. (+)
+B) Упрощает написание графического интерфейса.
+
+Вопрос 5: Какая из перечисленных платформ НЕ является сферой применения C# и .NET?
+A) Веб-приложения (ASP.NET Core).
+Б) Игры (движок Unity).
+B) Ядро операционной системы Linux. (+)
+
+### Лекция 3: Python как интерпретируемый язык
+Вопрос 1: Какой тип типизации используется в Python?
+A) Статическая.
+Б) Динамическая строгая. (+)
+B) Слабая динамическая.
+
+Вопрос 2: Как в Python выделяются блоки кода?
+A) Фигурными скобками {}.
+Б) Ключевыми словами begin и end.
+B) Отступами (пробелами или табуляцией). (+)
+
+Вопрос 3: В чем заключается особенность библиотек для научных вычислений, таких как NumPy?
+A) Они полностью написаны на Python для лучшей совместимости.
+Б) Они написаны на C/C++ для скорости, но предоставляют удобный Python-интерфейс. (+)
+B) Они требуют обязательной компиляции перед использованием.
+
+Вопрос 4: Какая конструкция Python позволяет лаконично создавать новые списки на основе существующих?
+A) Цикл for.
+B) Списковые включения (list comprehensions). (+)
+B) Функция map().
+
+Вопрос 5: Какая проблема динамической типизации может проявиться в крупных проектах на Python?
+A) Невозможность создать сложную иерархию классов.
+Б) Ошибки несовместимости типов проявляются только во время выполнения. (+)
+B) Сложный синтаксис управления памятью.
+
+## Лекция 4: Вайбкодинг - от эксперимента к индустриальному стандарту
+Вопрос 1: Что представляет собой «вайбкодинг» в понимании 2026 года?
+A) Написание кода с использованием голосового ввода.
+Б) Полноценное взаимодействие с ИИ-агентами, способными выполнять целые рабочие процессы. (+)
+B) Быстрое прототипирование без тестирования.
+
+Вопрос 2: В чем заключается главный архитектурный сдвиг в разработке 2026 года?
+A) Переход от компилируемых языков к интерпретируемым.
+Б) Переход к агентному искусственному интеллекту, работающему с минимальным контролем человека. (+)
+B) Полный отказ от использования облачных технологий.
+
+Вопрос 3: Какой парадокс возникает в связи с ростом производительности благодаря вайбкодингу?
+A) Парадокс производительности Джевонса: рост производительности ведет к созданию большего объема кода и увеличению потребности в его поддержке. (+)
+Б) Парадокс выбора: сложность выбора между разными ИИ-инструментами.
+B) Парадокс стоимости: увеличение скорости разработки ведет к удорожанию проектов.
+
+Вопрос 4: Что эксперты называют главным риском бесконтрольного использования вайбкодинга?
+A) Потерю навыков ручного написания кода у разработчиков.
+Б) Накопление технического долга колоссальных масштабов. (+)
+B) Зависимость от интернет-соединения.
+
+Вопрос 5: Какова роль человека в мультиагентных системах будущего?
+A) Написание большей части кода вручную.
+Б) Выполнение функций продуктового менеджера и архитектора, определяющего общее направление. (+)
+B) Полное отсутствие, так как ИИ заменяет человека во всем.

+ 23 - 0
Лекции/Python/Titov3.md

@@ -0,0 +1,23 @@
+ Python как интерпретируемый язык
+ 
+Python занимает уникальную нишу в спектре языков программирования, являясь эталоном интерпретируемого языка с динамической строгой типизацией. В отличие от компилируемых языков (Java, C#), где код преобразуется в машинный или промежуточный код заранее, Python-программа выполняется непосредственно интерпретатором, построчно разбирающим исходный код. Это накладывает определенные ограничения на производительность, но дает преимущества в скорости разработки и интерактивности: можно выполнять код построчно в командной строке или блокнотах, что особенно ценно для исследовательских задач.
+
+Динамическая типизация означает, что тип переменной определяется в момент присвоения значения и может изменяться в процессе выполнения. Для начинающего разработчика это снижает порог входа: не нужно объявлять сложные иерархии классов до написания логики. Однако это накладывает ответственность за тщательную проверку, так как ошибки несовместимости типов проявятся только во время выполнения, а не на этапе компиляции. Поэтому в крупных проектах на Python часто применяют дополнительную статическую проверку типов с помощью инструментов.
+
+Синтаксис Python построен на концепции правила границ, где блоки кода выделяются не фигурными скобками, а отступами (пробелами или табуляцией). Это принуждает к написанию зрительно чистого и читаемого кода, что критически важно при работе в команде или поддержке крупных проектов. Базовые конструкции включают работу со списками, словарями и кортежами, которые являются встроенными типами и оптимизированы для высокопроизводительной работы. Особого внимания заслуживают списковые включения - лаконичный способ создания новых списков на основе существующих.
+
+![](tit1.jpg)
+
+Популярность Python в научной среде и области обработки данных обусловлена не столько самим языком, сколько его экосистемой. Библиотеки для научных вычислений (NumPy, Pandas), машинного обучения и наглядного представления данных превращают Python в мощный инструмент для исследования данных. Эти библиотеки часто написаны на C/C++ для скорости, но предоставляют Python-интерфейс, что дает разработчику производительность низкоуровневых языков с простотой высокоуровневого синтаксиса. Например, библиотека NumPy реализует многомерные массивы и операции над ними на C, но вызывается из Python как обычные функции.
+
+Таблица 1. Применение Python в зависимости от подхода
+
+| Область | Ключевые библиотеки | Подход |
+| -------- | -------- | -------- |
+| Сетевые приложения  Джанго     | Фласк	Объектный    | процедурный     |
+| Исследование данных	Пандас   | научные библиотеки   | Функциональный, процедурный     |
+| Автоматизация	Скрипты    | системные библиотеки    | Процедурный, командный   |
+
+Благодаря своей универсальности и простоте, Python идеально подходит для первого знакомства с понятиями алгоритмизации, позволяя студенту сосредоточиться на логике решения задачи, не отвлекаясь на сложный синтаксис управления памятью. Кроме того, наличие огромного количества обучающих материалов и активного сообщества делает процесс вхождения в профессию максимально плавным по сравнению с более сложными языками. Механизм управления памятью в Python включает подсчет ссылок и сборщик мусора для обнаружения циклических ссылок, что автоматизирует освобождение ресурсов.
+
+

BIN
Лекции/Python/tit1.jpg


BIN
Лекции/Vibe_Coding/tit1.jpg


BIN
Лекции/Vibe_Coding/tit2.jpg


+ 51 - 0
Лекции/Vibe_Coding/titov4.md

@@ -0,0 +1,51 @@
+# Вайбкодинг - от эксперимента к индустриальному стандарту
+Вайбкодинг перестал быть просто модным термином из социальных сетей и превратился в полноценную инженерную практику, которая в 2026 году становится индустриальным стандартом разработки программного обеспечения. Согласно прогнозам аналитической компании GlobalData, именно в этом году вайбкодинг выходит на мейнстримный уровень, предоставляя разработчикам и даже обычным пользователям принципиально новые инструменты для создания приложений.
+
+#### Что такое вайбкодинг сегодня
+Если в 2025 году под вайбкодингом понимали практику написания кода через диалог с искусственным интеллектом, то сегодня это понятие существенно расширилось. Вайбкодинг - это полноценное взаимодействие с ИИ-агентами, которые не просто генерируют отдельные фрагменты кода, а способны самостоятельно выполнять целые рабочие процессы: писать тесты, отлаживать ошибки, навигировать по сложной кодовой базе и вносить исправления до тех пор, пока не будет достигнут удовлетворительный результат.
+
+Исследования показывают, что разработчики используют искусственный интеллект примерно в 60% своей работы, при этом полностью делегировать удается лишь небольшую часть задач - от 0 до 20%. Это означает, что человек остается ключевым звеном в процессе, но его роль трансформируется: от написания каждой строчки кода к координации ИИ-агентов и принятию стратегических решений.
+
+![](tit2.jpg)
+
+#### Архитектурный сдвиг: агентный ИИ
+Главный тренд 2026 года - переход к агентному искусственному интеллекту, способному работать над достижением цели с минимальным контролем со стороны человека. Современные модели, такие как GPT-5.3-Codex и Claude Opus 4.6, уже умеют генерировать, проверять, тестировать и отлаживать программный код, а также улучшать собственные результаты до того, как итоговая работа будет представлена человеку.
+
+Крупные технологические компании уже внедряют такие подходы. Например, инженеры Anthropic (создатели Claude) в значительной степени полагаются на собственные ИИ-инструменты, а глава Claude Code Борис Черный заявил, что не писал код вручную более двух месяцев.
+
+Таблица 1. Сравнение поколений вайбкодинга
+
+| Поколение | Характеристика | Роль человека |
+| -------- | -------- | -------- |
+| 2024-2025    | ИИ-ассистенты, автодополнение кода     | Написание кода с подсказками     |
+| 2026   | ИИ-агенты, автономные рабочие процессы     | Постановка задач и контроль результатов    |
+| Ближайшее будущее   | Мультиагентные системы    | Архитектурное проектирование     |
+
+#### Парадокс производительности и новый технический долг
+Повышение производительности, обеспечиваемое вайбкодингом, создает неожиданную проблему. Эксперты предупреждают: если вся инженерная организация будет использовать этот подход без стратегической структуры, то сегодняшние достижения в производительности завтра превратятся в технический долг колоссальных масштабов.
+
+Маттиас Штайнер, вице-президент по глобальным бизнес-инновациям Syntax (компания группы SAP), отмечает: «Код в свободном стиле может быть весьма опасен, потому что он разрушает кодовую базу. Если вы хотите создать программное обеспечение корпоративного уровня со сроком службы в годы, вайбкодинга недостаточно».
+
+Действует так называемый парадокс Джевонса: повышение производительности ведет к созданию большего объема программного обеспечения, что, в свою очередь, увеличивает потребность в его поддержке. Общий спрос на инженерные работы и бремя управления, связанное с поддержкой всего этого кода, не снижается, а возрастает.
+
+![](tit1.jpg)
+
+#### Практическое применение в 2026 году
+Вайбкодинг сегодня находит применение в самых разных областях. В архитектуре и проектировании, например, специалисты создают кастомные инструменты для анализа фасадных решений или моделирования солнечного освещения за считанные часы вместо недель традиционной разработки.
+
+В корпоративной среде появляются новые возможности для специалистов без глубокого программистского образования, которые теперь могут создавать бизнес-приложения через естественно-языковые интерфейсы. Популярные платформы для начинающих включают ChatGPT, Claude, Lovable и Zapier Agents, а среди профессиональных разработчиков лидируют Cursor, Bolt и Windsurf.
+
+Таблица 2. Ключевые навыки разработчика в эпоху вайбкодинга
+
+| Навык | Почему важен |
+| -------- | -------- |
+| Промпт-инжиниринг    | Умение точно формулировать задачи для ИИ     |
+| Архитектурное мышление   | Проектирование систем, а не написание строк кода   |
+| Критическая оценка кода   | Выявление ошибок и уязвимостей в сгенерированных решениях    |
+| Управление ИИ-агентами    | Координация работы множества автономных помощников   |
+
+
+Будущее: мультиагентные системы
+Следующий рубеж, который уже просматривается на горизонте 2026 года, - это мультиагентные системы, где множество специализированных ИИ-агентов работают совместно над сложными проектами. В Claude Opus 4.6 уже появилась функция, позволяющая развертывать автономные команды агентов, которые могут одновременно выполнять разные аспекты сложных задач.
+
+Такие системы способны самостоятельно распределять роли: один агент пишет код, второй его тестирует, третий оптимизирует производительность, четвертый проверяет безопасность. Человек в этой схеме выступает как продуктовый менеджер и архитектор, определяющий общее направление и утверждающий результаты.