Created by AIImproved by people

Riqli · living documents · updated continuously

Where AI knowledge meets human practice.

Share with friends
image

Basic programming skills (Python, JavaScript) Hard skill. (Programming. Python. JavaScript. Basics of coding. Self-study. Tutorials. Hard skill.)

sections

Введение

contents

Аннотация. Начало пути в мир программирования часто сопровождается вопросами: «С чего начать?», «Какой язык выбрать?», «Как не бросить на полпути?». Этот курс решает именно эти задачи, предоставляя структурированный путеводитель по двум самым востребованным языкам — Python и JavaScript. Мы разберем фундаментальные концепции, общие для всех языков, и одновременно покажем, как они реализуются в каждом из них. Курс построен на практических примерах и реальных сценариях, что позволяет сразу применять полученные знания, превращая абстрактную теорию в конкретные, работающие инструменты. Если вы чувствуете неуверенность перед «страшным кодом» или хотите систематизировать уже имеющиеся разрозненные знания, этот материал станет вашей надежной опорой.

contents

Цель курса. После прохождения курса вы сможете самостоятельно разрабатывать простые консольные приложения и веб-скрипты на Python и JavaScript, используя основные конструкции языков и понимая логику выполнения программ.

contents

Результаты обучения.

  • Знать: фундаментальные конструкции программирования (переменные, типы данных, операторы, функции, циклы, условия); синтаксис и ключевые особенности Python и JavaScript; принципы взаимодействия с пользователем через консоль.
  • Уметь: писать рабочий код на двух языках; выполнять отладку и поиск ошибок; правильно использовать встроенные функции и структуры данных.
  • Владеть: навыками работы с системами контроля версий (Git) на базовом уровне; навыками использования онлайн-документации и сообществ для решения проблем.
contents

Для кого этот курс.

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

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

sections

Модуль 1. Погружение в среду разработки

contents

1.1 Установка интерпретаторов Python и Node.js

Первый шаг в программировании начинается с установки среды выполнения. Для работы с Python необходим интерпретатор, а для JavaScript — среда Node.js (если мы говорим о серверном или консольном JS). Скачайте актуальные версии с официальных сайтов: python.org и nodejs.org. На сайте Python обязательно обратите внимание на чекбокс «Add Python to PATH» во время установки — это позволит запускать команду python из командной строки. После установки проверьте, что все работает, открыв терминал и выполнив команды python --version и node -v. Появление номеров версий означает, что все настроено правильно.

Практический совет: если вы используете Windows, всегда устанавливайте Python через официальный установщик, а не через Microsoft Store, чтобы избежать проблем с правами доступа и путями.

contents

1.2 Выбор редактора кода: VS Code

Для написания кода вам понадобится специализированный редактор. Современным стандартом в индустрии является Visual Studio Code (VS Code) — бесплатный, кроссплатформенный и обладающий огромным количеством расширений. Скачайте его с официального сайта code.visualstudio.com. После установки обязательно установите расширения для Python (от Microsoft) и для JavaScript/TypeScript (входят в базовую сборку, но можно установить пакет ESLint для проверки кода). Эти расширения добавят подсветку синтаксиса, автодополнение и отладку.

Практический совет: изучите сочетания клавиш. Например, Ctrl + ` открывает встроенный терминал, а Ctrl + Shift + P вызывает палитру команд. Настройка «горячих клавиш» ускоряет работу в разы.

contents

1.3 Знакомство с командной строкой

Программисты активно используют командную строку (терминал) для управления файлами, запуска скриптов и установки библиотек. В Windows это cmd или PowerShell, в macOS/Linux — Terminal. Базовые навыки работы в терминале критически важны. Научитесь переключаться между папками (cd <путь>), просматривать содержимое директории (dir или ls), создавать папки (mkdir) и запускать скрипты (python script.py или node script.js).

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

contents

1.4 Первая программа: «Hello, World!»

Традиция начинать изучение с вывода приветствия существует не просто так — это мгновенный результат и проверка связи всех инструментов. На Python код выглядит как print('Hello, World!'), на JavaScript в среде Node.js как console.log('Hello, World!');. Сохраните файлы с расширениями .py и .js соответственно, откройте их в VS Code, запустите через терминал и убедитесь, что видите заветное сообщение. Этот ритуал настраивает вас на рабочий лад и подтверждает, что ваша среда разработки полностью готова.

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

sections

Модуль 2. Основы синтаксиса и переменные

contents

2.1 Переменные и их объявление

Переменная — это именованное хранилище для данных. В Python переменная объявляется простым присваиванием name = 'Alice', тип определяется автоматически. В JavaScript используется ключевое слово let для изменяемых и const для константных значений: let name = 'Alice'; и const pi = 3.14;. Разница в том, что const не позволяет переприсваивать значение, что защищает от случайных ошибок. Правила именования едины: можно использовать буквы, цифры (не в начале), символы _ и $; стиль написания — camelCase для JavaScript и snake_case для Python.

Рекомендация: всегда используйте осмысленные имена переменных, отражающие их суть. Код с a = 10 сложнее читать, чем userAge = 10 или user_age = 10.

contents

2.2 Базовые типы данных

Все данные в программировании имеют тип. Основные типы: числа (целые int и дробные float), строки (последовательности символов, string) и логический тип (истина True/true или ложь False/false). В Python для проверки типа используется встроенная функция type(), в JavaScript — оператор typeof. Понимание типов критично, поскольку операции над разными типами (например, сложение строки и числа) могут вести себя неожиданно: в Python это вызовет ошибку, а в JavaScript — приведет к конкатенации ('10' + 20 = '1020').

Лайфхак: в JavaScript используйте === для строгого сравнения (без приведения типов) вместо ==, чтобы избежать странных результатов вроде 0 == false.

contents

2.3 Ввод и вывод данных

Взаимодействие с пользователем — основа интерактивных программ. Python использует функцию input() для получения данных из консоли и print() для вывода. JavaScript в браузере использует prompt() для ввода и alert() для вывода, а в Node.js — модуль readline или более простой console.log() для вывода. Важно помнить, что input() и prompt() всегда возвращают строку, поэтому для математических операций необходимо преобразовывать строку в число с помощью int() (Python) или Number() (JS).

Пример: в Python age = int(input('Сколько вам лет? ')), в JavaScript let age = Number(prompt('Сколько вам лет?'));.

contents

2.4 Комментарии в коде

Комментарии — это текст в коде, который игнорируется интерпретатором. Они служат для объяснения логики, временного отключения кода и улучшения читаемости. В Python комментарий начинается с символа # (однострочный), а многострочный создается с помощью тройных кавычек ''' или """ (чаще используется для документации). В JavaScript однострочный комментарий начинается с //, а многострочный заключается в /* ... */. Хороший код не требует комментариев, так как он говорит сам за себя через ясные имена переменных и функций, но на начальных этапах комментировать свои действия — отличная привычка, которая помогает систематизировать мысли.

Рекомендация: избегайте комментариев типа i = i + 1 // увеличиваем i на 1. Это очевидно. Комментируйте «почему», а не «что».

sections

Модуль 3. Управляющие конструкции

contents

3.1 Условный оператор if-else

Условные конструкции позволяют программе принимать решения. Общий синтаксис: if (условие) { код } else { код } в JavaScript и if условие: код else: код в Python. Ключевое отличие — в Python важны отступы (индентация) для определения блоков кода, а в JS используются фигурные скобки. Условие — это выражение, которое возвращает логическое значение (истину или ложь). Можно использовать несколько условий через else if (JS) или elif (Python).

Ошибка новичка: забывать двоеточие после if в Python или ставить точку с запятой после условия if (x > 0); в JS, что приводит к пустому телу условия и логической ошибке.

contents

3.2 Логические операторы

Для создания сложных условий используются логические операторы: and/&& (И), or/|| (ИЛИ), not/! (НЕ). В Python операторы пишутся словами, в JS — символами. Они позволяют комбинировать несколько сравнений в одном условии, например, if temperature > 20 and temperature < 30: (Python) или if (temp > 20 && temp < 30) { ... } (JS). Приоритет выполнения: сначала вычисляются операции в скобках, затем НЕ, затем И, затем ИЛИ. Понимание приоритетов помогает избежать ошибок, но лучше всегда использовать явные скобки для ясности.

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

contents

3.3 Циклы: while и for

Циклы позволяют выполнять блок кода многократно. while выполняется, пока условие истинно (используется, когда число итераций неизвестно). for используется, когда известен диапазон или последовательность. В Python for i in range(10): проходит по числам от 0 до 9. В JS стандартный for (let i = 0; i < 10; i++) { ... }. Python предлагает элегантный способ обхода коллекций: for item in list:, в JS — for (let item of array) { ... }. Важно избегать бесконечных циклов, проверяя условие выхода.

Кейс: для ввода пароля с тремя попытками удобно использовать while count < 3 с инкрементом счетчика.

contents

3.4 Операторы break и continue

Управление циклом можно сделать более гибким с помощью операторов break и continue. break мгновенно завершает выполнение цикла, continue — пропускает текущую итерацию и переходит к следующей. Эти операторы работают в обоих языках одинаково. Они полезны для оптимизации: например, поиск элемента в списке можно прервать после нахождения, не перебирая остальные элементы. В Python конструкция for...else позволяет выполнить блок, если цикл не был прерван break.

Антипаттерн: злоупотребление break и continue делает код трудночитаемым («спагетти-код»). Используйте их экономно, когда это действительно упрощает логику.

sections

Модуль 4. Структуры данных

contents

4.1 Списки (List) и массивы (Array)

Список (Python) и массив (JS) — упорядоченные коллекции элементов. Объявление: colors = ['red', 'green', 'blue'] в Python и let colors = ['red', 'green', 'blue']; в JS. Индексация начинается с нуля: первый элемент имеет индекс 0. Оба языка поддерживают добавление (append() в Python, push() в JS), удаление (pop(), remove()) и доступ по индексу. Важное отличие: массивы в JS могут содержать элементы разных типов и динамически изменять размер, а списки в Python предназначены для однородных данных, хотя технически тоже могут содержать любые типы.

Совет: для работы с большими объемами данных в Python используйте генераторы списков ([x*2 for x in range(10)]) — это быстрее и компактнее, чем циклы.

contents

4.2 Словари (Dict) и объекты (Object)

Словарь в Python и объект в JS хранят пары «ключ-значение». Это неупорядоченные структуры (хотя в новых версиях Python порядок сохранен). Создание: person = {'name': 'Alice', 'age': 30} в Python и let person = {name: 'Alice', age: 30}; в JS. Доступ к значениям через квадратные скобки person['name'] или через точку в JS (person.name). Эти структуры незаменимы для хранения связанных данных и быстрого поиска по ключу. В Python также есть модуль collections с defaultdict и Counter для расширенных возможностей.

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

contents

4.3 Кортежи и множества

Помимо списков, в Python есть кортежи (tuple) — неизменяемые последовательности, создаваемые через запятую: coords = (10, 20). Они занимают меньше памяти и защищены от случайного изменения. Множества (set) — неупорядоченные коллекции уникальных элементов: unique = {1, 2, 3}. В JavaScript аналогичными структурами являются Set и Map, хотя они требуют явного создания через конструктор: new Set([1,2,3]). Множества идеальны для удаления дубликатов и проверки принадлежности элемента (if x in set).

Кейс: кортежи часто используются для возврата нескольких значений из функции в Python, например, return min, max.

contents

4.4 Итерация по коллекциям

Все структуры данных можно обходить с помощью циклов. В Python наиболее идиоматичный способ — for item in collection, если нужен и индекс, используется enumerate(). Для словарей можно перебирать ключи (for key in dict), значения (for value in dict.values()) или пары (for key, value in dict.items()). В JS для массивов используется forEach() или цикл for...of; для объектов — for...in (с проверкой hasOwnProperty). Понимание этих методов критично для работы с данными.

Совет: в Python избегайте for i in range(len(list)), предпочитая прямой перебор элементов — это более Pythonic и читаемо.

sections

Модуль 5. Функции и модули

contents

5.1 Определение и вызов функций

Функция — это именованный блок кода, который можно многократно вызывать. В Python: def greet(name): return 'Hello ' + name. В JS: function greet(name) { return 'Hello ' + name; }. Функции принимают аргументы (параметры) и возвращают результат. Они помогают избежать дублирования кода и структурируют программу. Переменные, объявленные внутри функции, имеют локальную область видимости и недоступны снаружи, что изолирует логику и предотвращает конфликты имен.

Практика: начинайте программу с функции main(), которая вызывает остальные, — это признак хорошего стиля.

contents

5.2 Параметры и аргументы

В Python параметры могут быть позиционными или именованными (передаваемыми по ключу). Позиционные параметры задаются в порядке объявления, именованные — с указанием имени. В JavaScript параметры передаются по позиции, но с помощью объекта options можно имитировать именованные. Также в JS доступны параметры по умолчанию: function multiply(a, b = 1) { return a * b; }; в Python аналогично: def multiply(a, b=1): return a * b. Функции могут принимать переменное число аргументов: в JS это ...rest (rest-оператор), в Python — *args и **kwargs.

Рекомендация: используйте параметры по умолчанию для создания гибких функций, но будьте осторожны с изменяемыми объектами (списками) в качестве значений по умолчанию в Python — они создаются один раз и разделяются между вызовами.

contents

5.3 Стрелочные функции в JavaScript

В JavaScript появился современный синтаксис объявления функций через «стрелочную» нотацию: const greet = (name) => 'Hello ' + name;. Они короче и, что важно, не имеют своего контекста this, что решает множество проблем в асинхронном коде. В Python аналог — lambda-функции: greet = lambda name: 'Hello ' + name, но они могут содержать только одно выражение. Стрелочные функции в JS активно используются в колбэках и функциональном программировании.

Критерий выбора: используйте стрелочные функции для простых коротких операций; для сложной логики и методов объектов лучше подходят классические function.

contents

5.4 Импорт модулей

Модули позволяют разбивать код на отдельные файлы и переиспользовать их. В Python для импорта используется ключевое слово import: import math, а затем обращение math.sqrt(16). Также возможен импорт конкретных функций: from math import sqrt. В JavaScript (Node.js) используется require или современный import из стандарта ES6: import { sqrt } from 'math'; (для использования import в Node.js нужно настроить type: module в package.json). Модули — это основа архитектуры любого серьезного проекта, они обеспечивают изоляцию и управляемость кода.

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

sections

Модуль 6. Отладка и обработка ошибок

contents

6.1 Типы ошибок и исключения

Ошибки в программировании делятся на синтаксические (ошибки в написании кода, которые мешают запуску) и логические (программа работает, но дает неверный результат). Также существуют исключения — ошибки, возникающие во время выполнения программы, например, деление на ноль или доступ к несуществующему элементу. В Python все исключения являются классами, унаследованными от BaseException. В JavaScript — от Error. Понимание иерархии исключений помогает правильно их перехватывать и обрабатывать.

Совет: всегда читайте сообщение об ошибке (traceback) — оно содержит точную информацию о том, что пошло не так и в какой строке.

contents

6.2 Конструкции try-except (Python) и try-catch (JS)

Для обработки исключений используются блоки try...except (Python) и try...catch (JS). Код, который может вызвать ошибку, помещается в блок try. Если ошибка возникает, управление передается в блок except/catch, где можно либо вывести сообщение, либо выполнить альтернативные действия. В Python можно указывать конкретные типы исключений для перехвата: except ZeroDivisionError, и даже иметь блок else (если ошибки не было) и finally (выполняется всегда). В JS блок finally также доступен.

Антипаттерн: пустой блок except или catch, который «проглатывает» ошибку, — худшее, что можно сделать. Это маскирует проблему и делает отладку невозможной.

contents

6.3 Использование отладчика в VS Code

VS Code имеет встроенный мощный отладчик. Установите точки останова (breakpoints), кликнув слева от номера строки. Запустите программу в режиме отладки (F5 или через меню «Run and Debug»). Вы сможете пошагово выполнять код, наблюдать за значениями переменных в панели «Variables», выполнять выражения в консоли отладчика и управлять потоком выполнения (шаг с заходом в функции, шаг с обходом и т.д.). Это гораздо эффективнее, чем использовать print() для отладки (хотя для быстрых проверок print тоже подходит).

Совет: настройте конфигурацию отладки (файл .vscode/launch.json) для вашего проекта, указав интерпретатор Python или среду Node.js.

contents

6.4 Основы тестирования

Тестирование — неотъемлемая часть разработки, гарантирующая, что код работает корректно. Базовый уровень — assertions (утверждения). В Python: assert 2 + 2 == 4; в JS: console.assert(2 + 2 === 4, 'Ошибка'). Если условие ложно, программа прерывается с ошибкой. Для серьезного тестирования используются фреймворки: unittest или pytest в Python, Jest или Mocha в JS. Они позволяют писать тестовые сценарии, группировать их и автоматически запускать. Хороший то — писать тесты до написания самого кода (TDD — разработка через тестирование), но для новичка достаточно просто проверять важные функции.

Практика: создайте функцию сложения и сразу напишите для нее тест assert sum(1,2) == 3. Это формирует правильную привычку.

sections

Модуль 7. Введение в веб-разработку и интерактивность

contents

7.1 Роль JavaScript в браузере

JavaScript — это язык, который делает веб-страницы живыми. В отличие от Python, который выполняется на сервере или локально, JS может выполняться прямо в браузере пользователя. Он взаимодействует с элементами HTML (DOM) и реагирует на действия пользователя: клики, ввод текста, загрузка страницы. Базовое взаимодействие начинается с подключения скрипта к HTML с помощью тега <script> или <script src='file.js'></script>. Это открывает огромные возможности для создания интерфейсов.

Важно: чтобы найти элемент на странице, используйте document.getElementById() или document.querySelector(), а для изменения содержимого — свойство innerHTML или textContent.

contents

7.2 Обработка событий

События — это сигналы от браузера о том, что произошло какое-то действие (клик, наведение мыши, отправка формы, загрузка страницы). Чтобы реагировать на них, используют обработчики событий (event listeners). В JS это делается через метод addEventListener: button.addEventListener('click', function() { alert('Clicked!'); });. Можно также использовать атрибуты HTML, например, onclick, но такой подход считается устаревшим и плохо масштабируется. Обработчики позволяют отделить логику от разметки, что является хорошей практикой.

Совет: для динамически создаваемых элементов используйте делегирование событий — назначайте обработчик на родительский элемент и проверяйте целевой элемент через event.target.

contents

7.3 Манипуляция CSS-классами

Для изменения внешнего вида элементов в ответ на действия пользователя часто используют манипуляции с CSS-классами. В JavaScript для этого есть свойство element.classList и его методы: add(), remove(), toggle() (переключает класс) и contains() (проверяет наличие). Например, div.classList.toggle('active') позволяет показывать/скрывать меню или подсвечивать активный элемент. Это более гибкий подход, чем прямое изменение стилей через element.style.color, так как позволяет переиспользовать готовые CSS-правила.

Кейс: при нажатии на кнопку «Показать еще» добавляем класс visible к скрытому блоку, который меняет display с none на block.

contents

7.4 Работа с формами

Формы — один из основных способов взаимодействия с пользователем. В JavaScript можно перехватывать отправку формы (submit), чтобы проверить данные перед отправкой на сервер или выполнить другие действия без перезагрузки страницы. Это делается через form.addEventListener('submit', function(event) { event.preventDefault(); /* проверка данных */ });. Метод preventDefault() отменяет стандартное поведение браузера. Для доступа к полям формы используется document.querySelector('input[name="email"]') или коллекция form.elements. Валидация данных на клиенте улучшает пользовательский опыт, но не должна заменять серверную валидацию в целях безопасности.

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

sections

Модуль 8. Современные инструменты и экосистема

contents

8.1 Система контроля версий Git

Git — это распределенная система управления версиями, без которой сегодня не обходится ни один проект. Она позволяет отслеживать изменения в коде, возвращаться к предыдущим версиям и работать в команде. Базовый алгоритм: git init (инициализация репозитория), git add . (добавление изменений в «стейджинг»), git commit -m 'message' (фиксация изменений), git push (отправка на удаленный репозиторий, например, GitHub). Git — это «машина времени» для программиста, и игнорировать его — большая ошибка.

Практика: создайте аккаунт на GitHub и попрактикуйтесь создавать репозитории, делать коммиты и пушить изменения. Это станет вашим портфолио.

contents

8.2 Пакетные менеджеры: pip и npm

Пакетные менеджеры — это инструменты для установки сторонних библиотек, которые расширяют возможности языка. Для Python это pip: установка пакета выполняется командой pip install requests. Для JavaScript (Node.js) — npm или yarn: npm install express. Пакетный менеджер автоматически скачивает библиотеку и все её зависимости. Список зависимостей проекта в Python хранится в файле requirements.txt (или Pipfile), в JS — в package.json. Это позволяет легко воспроизвести окружение на другом компьютере.

Совет: всегда создавайте виртуальное окружение (venv) в Python для изоляции зависимостей разных проектов.

contents

8.3 Использование онлайн-ресурсов и документации

Умение пользоваться документацией и онлайн-сообществами — важнейший навык. Официальная документация Python и MDN Web Docs для JavaScript — главные источники правды. Также незаменимы ресурсы Stack Overflow, где можно найти ответы на большинство вопросов, и GitHub, где можно посмотреть на реальный код проектов. Современные ИИ-инструменты, такие как GitHub Copilot, помогают писать код и искать решения, но не стоит слепо доверять им — всегда проверяйте и понимайте предлагаемый код.

Рекомендация: при возникновении ошибки копируйте текст ошибки в поисковик — скорее всего, это уже решенная проблема.

contents

8.4 План дальнейшего обучения

Освоив основы, вы стоите на пороге огромного мира. Для Python дальнейший путь может лежать в области Data Science (изучите библиотеки pandas, numpy, matplotlib), веб-разработки (Django, Flask) или автоматизации. Для JavaScript — это освоение фреймворков (React, Vue, или Angular), бэкенда на Node.js и асинхронного программирования. Выбор направления зависит от ваших интересов, но фундамент, который вы заложили, универсален. Помните, что программирование — это навык, который требует постоянной практики. Решайте задачи на платформах Codewars, LeetCode или создавайте свои небольшие проекты.

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