Вы находитесь на странице: 1из 71

Computer science - 01

Introduction
О тренере
• Алексей Доронин, 26 лет, холост :)

• Образование:

– ГрГУ, спец. “Компьютерная безопасность”

– Магистратура

– (учусь) Аспирантура БГУИР, спец. Data science


О тренере
Опыт работы:

• ГрГУ - преподаватель, 3 года

• (now) itgen.io - тренер по программированию для детей

• (now) Solbegsoft - .NET разработчик


План занятия:
• Немного истории

• Устройство компьютера

• Языки программирования

• Функционирование памяти (биты, байты)

• Представление текста
Для кого этот курс?
Для кого курс?
• Для представителей любых профессий

• Для того, кто ещё не определился

• Для того, кто уже определился


Для чего этот курс?
Для чего курс?
Главная цель:
• Научить основам программирования

Вспомогательные:
• Познакомить с многообразием отрасли

• Направить усилия в нужное русло


Компьютерные науки
• Основы алгоритмизации и программирования (C#, C++,
Python)

• Операционные системы

• Базы данных

• Компьютерные сети (курсы Cisco)

• Язык разметки веб-страниц (HTML+CSS)

• Спец. курсы: криптография, компьютерная безопасность


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

(сугубо моё личное мнение)


БД
• БД - база данных - хранилище данных в некотором виде

• По сути, представляет собой файл (*.mdf и др.)

• Базы данных используются практически во всех


приложениях, где необходимо быстро и эффективно
работать с данными (извлекать, вставлять, удалять,
изменять)
СУБД
• СУБД - система управления базами данных -
предназначена для менеджмента и настройки базы
данных

• Т.е. СУБД - программа для полноценной работы с базой

• Наиболее популярная в мире СУБД - Oracle Database

• Также популярны Misrosoft SQL Server, MySQL, SQLite,


PostgreSQL, MongoDB, Redis
СУБД
• Рекомендую начать с основ в бесплатном онлай-курсе у
нас

И затем продолжить здесь:


• Известнейший ресурс для изучения БД* :
http://sql-ex.ru/
Упражнения по SQL -> SELECT

*Кстати говоря, весьма популярен и на Западе


Компьютерные сети
• Совокупность компьютеров, объединённых каналом
связи, для получения доступа к каким-либо ресурсам

• Интернет - большая сеть сетей

• Т.е. когда два устройства некоторым образом


соединяются друг с другом, они всегда объединены в сеть
(например, через WiFi, сетевой кабель, Bluetooh, ИК-порт,
спутниковая связь, GSM и т.д.)
Каким образом удаётся осуществлять
доставку данных?
Компьютерные сети
• За корректную отправку, получение и передачу данных
отвечают сетевые протоколы

Наиболее известные:
• IP, HTTP, HTTPS, FTP, RDP, SSH, Ethernet и т.д.

• У каждого устройства, подключенного к компьютерной


сети по протоколу Ethernet, должен быть:
– MAC-адрес (физический адрес)
– IP-адрес (логический адрес)
Сетевые порты
• Каждому приложению на ПК, которое каким-либо
образом подключается ко внешней сети, выделяется
уникальный порт

• Порт - просто числовой номер от 0 до 65535

• Данное число в совокупности с IP-адресом однозначно


идентифицирует сетевое приложение (если бы был
только IP-адрес, как работать нескольким программам с
сетью одновременно?)
Сети
• Отличный курс по сетям - Cisco Routing & Switching (CCNA
R&S module 1)
Операционные системы

Unix-подобные ...
Window
s
Из истории ОС...
• Когда компьютеры были большими, было придумано
огромное количество ОС

• По сути, в 50-х-80-х годах чуть не под каждую ЭВМ (они


тогда так назывались) придумывалась собственная ОС
(или модифицировалась уже существующая)

• Затем пришёл UNIX - инновационная для того времени


система с открытым исходным кодом, который мог
модифицировать каждый

• Появилось семейство UNIX-подобных ОС:


Linux, MacOS, BSD
UNIX-подобные ОС

Linux MacOS BSD

...
Debian

Ubuntu

Linux Mint
Составляющие компьютера

Устройства ввода Устройства вывода


Какие виды компьютеров вам
известны?
Виды компьютеров
• ПК - персональные компьютеры
• Сервера
• Фермы (например, в дата-центрах)

Нацеленные на мобильность:

• Ноутбук (laptop)
• Нетбук
• КПК
• Мобильные телефоны
Устройство ПК
• Материнская плата - связывает все компоненты

• Процессор - “мозг”

• Видеокарта - “глаза”

• Оперативная память - кратковременная память

• Жёсткий диск\SSD - долговременная память

• Вопросы к аудитории:
1. Для чего служит звуковая карта?
2. Для чего служит сетевая карта?
Процессор
• “Заточен” под выполнение арифметических операций

• Оперирует: регистрами

• Регистр - ячейка памяти процессора различного размера


(1 байт, 2 байта …)

• Разрядность: x86 и x64

• Одна операция - за один такт


Такт и Герц
• Такт - одна микрооперация
• Герц - частота выполнения тактов

• Мощность: измеряется в Гц (герцах), МГц (мегагерцах),


ГГц (гигагерцах)

• Что такое “частота в 3 МГц”?

• 1 такт = 1/3000000

• Процессорное время - отводится каждому процессу


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

• Иначе говоря, служит для отрисовки графики

• Можно обойтись без неё (при необходимости)


Оперативная память
(RAM)
• Кратковременная

• Быстрая

• Дорогая
HDD
• Hard disk drive (рус. “жёсткий диск”, “винчестер”)

• Основной вид накопителей в большинстве компьютерах

• Принцип - магнитная запись

• Внутри на самом деле находится диск:

https://upload.wikimedia.org/wikipedia/commons/transcoded/c/
c5/HardDisk1.ogv/HardDisk1.ogv.480p.vp9.webm
SSD
• Solid state drive (рус. “твердотельный накопитель”)

• В 10ки раз быстрее HDD

• Принцип - цифровая запись

• Внутри - микросхемы
Программа
Всё то, что мы делаем на компьютере - обрабатывается
программами:

➔ Водите мышкой и курсор отрисовывается ровно в том


месте, в котором нужно? Это программа

➔ Нажимаете букву на клавиатуре и у вас отображается


такая же буква на мониторе? Это программа

➔ Нажимаете Play и воспроизводится видео, играет звук?


Это - программа

Сама ОС Windows - огромное количество программ


Программа
➢ Программа - набор инструкций компьютеру

➢ Эти инструкции иначе называют кодом программы (или


просто кодом)

На каком языке пишется код?


➢ Код пишется на одном языков программирования
Какие языки программирования
вы знаете?
Сколько существует различных
языков программирования?
Языки программирования
Наиболее известные:

• Java

• C#

• Python

• Javascript

• C, C++
Кто уже пробовал
программировать?
Для чего нужны языки
программирования?
Языки программирования

Высокого уровня Низкого уровня


• Java • Assembler
• C# • C, C++
• Python
• Javascript
• C, C++
• Ruby
• Pascal
• Delphi
Машинный код
• Любая программа в конечном итоге исполняется
процессором

• Прямые инструкции процессору называют машинным


кодом

• Код на любом из языков программирования


транслируется некоторым образом в машинный код

• 0и1

• Можно писать сразу на машинном коде


Hello, World!
на машинном коде

BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C
6C 6F 2C 20 57 6F 72 6C 64 21
Программа на Assembler
text: segment 'code'
assume CS:text, DS:text

begin: mov AX,text


mov DS,AX
mov AH,09h
mov DX,offset message
int 21h
mov AH,4Ch
mov AL,00h
int 21h
message: db 'Hello, world!'
text: ends
end begin
Программа на C#
using System;

namespace TestApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
Программа на Python

print(‘Hello, world!’)
Код программы
(на высокоуровневом языке)

Трансляция

Машинный код
Языки программирования

Компилируемы Интерпретируемые
е
• Java • Python
• C# • Javascript
• C, C++ • Ruby
• Delphi • Pascal
Java C#
этап
компиляции
байт-код IL
*.jar *.exe, *.dll

этап JVM .NET фреймворк


интерпретации

машинный код под конкретную ОС и


архитектуру процессора
Языки программирования

Статически Динамически
типизированные типизированные
• Java • Python
• C# • Javascript
• C, C++ • Ruby
• Pascal, Delphi
Static vs. Dynamic

● Компилятор сам ● Можно не заботиться о


отлавливает ошибки на типах данных при
этапе компиляции (т.е. написании кода
ещё до выполнения) ● Код из-за этого
читается легче
Виды программ

Веб Мобильные
(web, клиент-серверные)
Десктопные

Пользовательские Системные
(драйвера, и пр.)
Языки программирования
Наиболее известные:

• Java - компилируемый, статически


типизированный

• C# - компилируемый, статически
типизированный

• Python - интерпретирумый, динамическая типизация

• Javascript - интерпретирумый, динамическая типизация

• C, C++ - компилируемый, статически


типизированный
Как вы думаете, как хранится
информация в памяти ПК?
Хранение информации
• Наименьшая единица использования информации -
это байт
(byte)

• Термин byte произошёл от “bite” (в переводе означает


“кусок”, или глагол “откусывать часть чего-то целого”)

• (1 Кб) 1 Килобайт = ?

• (1 Мб) 1 Мегабайт = ?

• (1 Гб) 1 Гигабайт = ?

• Тера, пета, экса . . .


Хранение информации
• В одном байте - 8 бит
(хотя существуют и иные
варианты)

• Что такое бит?


По сути, бит - это 0 или 1

• С логической точки зрения: “правда” или “ложь”, нету


третьего варианта

• И если оперирует компьютер байтами,


то в памяти он хранит именно биты
Что чего больше?
Бит или байт?

Во сколько раз?

1 byte ?? 1 bit
Хранение информации
• В одном байте - 8 бит
(хотя существуют и иные
варианты)

• Что такое бит?


По сути, бит - это 0 или 1

• С логической точки зрения: “правда” или “ложь”, нету


третьего варианта

• И если оперирует компьютер байтами,


то в памяти он хранит именно биты
Байт
• Физически данные хранятся в виде байтов

• Байт - обозначение 8 бит

• 1 Байт равен 8 Битам (1 Б = 8 бит)

• Всё, с чем может работать компьютер (картинки, музыка,


текст) - хранится в виде байтов в памяти (в любой:
оперативной\на жёстком диске и т.п.)
10011100 = 156

11101010 = 234

11111111 = 255

А чему равно:

00000000 = ?

00000001 = ?
Двоичная система счисления
• Бит представляет собой пример числа в двоичной
системе счисления

• В двоичной системе счисления всего две цифры: 0 и 1

• Человек обычно мыслит в десятичной системе


счисления

Вопросы к аудитории:

1. Сколько цифр в десятичной системе счисления?

2. Какие ещё системы счисления бывают?


Шестнадцатеричная система

счисления
Людям сложно оперировать только 0 и 1

• Визуально человеку гораздо легче воспринимать


меньшее количество цифр

• Поэтому очень часто байты записывают не в двоичной, а в


шестнадцатеричной системе

Вопрос к аудитории:

1. Сколько цифр в шестнадцатеричной системе


счисления?
0 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 A

11 B

12 C

13 D

14 E

15 F
10011100 2 = 156 10 = 9C 16

11101010 2 = 234 10 = EA 16

11111111 2 = 255 10 = FF 16
ASCII-таблица
ASCII-таблица
• В ASCII 1 символ = 1 байт

• 1 байт может хранить всего 256 различных чисел, поэтому


таблица содержит соответственно 256 символов

• Первые 128 символов - всегда постоянны: латинский


алфавит, наиболее распространённые знаки препинания,
спецсимволы ПК

• Вторая половина таблицы отдана для страниц различных


языков: русского, китайского, болгарского и т.д.
• Для каждого языка - своя версия ASCII-кодировки
Крякозябры?
Крякозябры
Кодировки
• cp-1251 - наиболее распространённая русская кодировка в
ASCII (благодаря Windows)

• cp-866 - ещё одна русская кодировка, происходит из DOS


систем

• КОИ-8 - отечественная версия русской кодировки, ранее


была весьма популярна в Рунете

• На данный момент вместо использования конкретных


культур во всём мире используют двухбайтовую
кодировку - UNICODE (UTF-8)

Вопрос аудитории:
Если в одном байте можно хранить 256 символов,
Полезные ссылки

• sql-ex.ru - известнейший ресурс для изучения


баз данных

• pythontutor.ru - изучение Пайтона на


отличных задачах
ИЛИ
• snakify.org - немного другими словами
подаётся та же теория, что и в пайтонтьюторе.
Задачи в основном - дубли с пайтонтьютора
Группа в Telegram
Спасибо за внимание!

Обращайтесь по любым вопросам на почту:

aliexei.doronin@gmail.com