Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram, группа в ВКонтакте

Авторский курс yabasic от @Terrazocultor

История разработки, новости релизов и документация
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Авторский курс yabasic от @Terrazocultor
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Программа

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

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

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

Ещё одна вещь, которая может заставить указатель вести себя неожиданно, по крайней мере в YaBasic (и во многих других языках), — это наличие подпрограмм или процедур. Подпрограммы, или процедуры, — это части программы, выполняющие определённую задачу и имеющие имя, по которому их можно «вызвать». Когда имя подпрограммы вызывается, она выполняется. Но если указатель программы сам доходит до подпрограммы, она не выполнится. Указатель перепрыгивает через неё и продолжает движение. Подпрограммы выполняются только тогда, когда их вызывают. Подпрограммы можно размещать в начале программы, в конце или в середине. Это вопрос порядка; я предпочитаю размещать их в начале, желательно в том порядке, в котором они будут использоваться.

У каждой программы есть по крайней мере одна точка завершения, где программа заканчивается. Слово End (конец) обычно используется во многих языках программирования, включая YaBasic.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Подпрограмма, процедура, функция, модуль и т. д.

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

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

В YaBasic есть подпрограммы (которые также можно называть процедурами и/или функциями), а также понятие «библиотека» — это подпрограммы, в которых можно собирать коллекции процедур по мере накопления опыта, и тем самым наш программистский багаж будет расти. Например, можно делать «тематические» библиотеки: для вычислений, графики, работы со строками, работы с датами, обработки ошибок…

Когда нужно автоматизировать какую-либо задачу, то есть написать программу, есть предварительный этап, называемый «анализ». Мы должны рассматривать задачу как нечто целое, но также и на уровне деталей. Хороший способ подойти к программированию — составить схему того дела, которое мы собираемся автоматизировать (мы это рассмотрим), и посмотреть, из каких частей состоит задача. Если какая-то часть слишком сложна, мы делим её на более простые подзадачи, и так до тех пор, пока каждая задача не станет достаточно простой. В некоторых программах мне приходилось опускаться до 8 уровней деления, чтобы всё было управляемо. Возможно, это одна из самых интересных сторон программирования.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

QWERTY, AZERTY

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

Раскладка QWERTY принята в Испании и во многих других странах.
Если посмотреть на левую часть клавиатуры, на верхний ряд буквенных клавиш, мы увидим последовательность QWERTY.

В раскладке AZERTY мы увидим последовательность AZERTY; она используется в основном во Франции и некоторых других странах. Существуют и другие варианты расположения клавиш, кроме этих двух.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

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

Это набор программ, позволяющих компьютеру выполнять базовые функции, благодаря чему пользователю не нужно создавать такие программы самому. Например, когда вы нажимаете клавишу на клавиатуре, на экране появляется символ этой клавиши, скажем, буква «T», если нажата именно она. Вовсе не очевидно, что это происходит «само собой». Это происходит потому, что есть программное обеспечение (программы), которое делает это возможным. Подключение к интернету и его внутренние детали, организация информации в компьютере и её отображение на экране, доступ к дискам, управление датой и временем, используемый набор символов — всё это составляет операционную систему, сокращённо ОС (по-английски OS, Operating System).

Существовало много операционных систем, некоторые уже вымерли, например CP/M и MS-DOS.

Позже на платформе MS-DOS появились первые версии Windows, а начиная с Windows 95 эта система постепенно отделялась от MS-DOS.

Другие операционные системы использовались и используются до сих пор, например Unix и Linux
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Интернет

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

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

Идея интернета возникла, когда три университета в Калифорнии (США) решили соединиться между собой с помощью специально созданного для этого протокола — TCP/IP. У каждого университета была собственная сеть, но они создали более крупную сеть, объединяющую все три университета. Она получила название ARPANET. С тех пор к ней подключалось всё больше и больше сетей, что привело к созданию World Wide Web, или www.

Одна из примечательных особенностей интернета — децентрализация. Нет никакого «главного штаба».
Информация находится то здесь, то там. Когда вы подключаетесь и получаете доступ к какому-либо контенту, этот контент может находиться рядом с вами… или на противоположной стороне Земли.

После появления www возникли другие сервисы, расширившие интернет, например:
  • FTP (File Transfer Protocol) — для обмена файлами
  • P2P (Peer to peer), одноранговая сеть — также для обмена файлами
  • IRC (Internet Relay Chat) — текстовые беседы в реальном времени
  • Социальные сети — настоящее социальное явление
  • Форумы самой разной тематики
  • Электронная почта
  • Стриминг — аудиовизуальная информация, часто «по запросу»
  • Онлайн-игры
  • Электронная коммерция
  • Различные услуги: запись к врачу, продление удостоверения личности, бронирование гостиницы и т. д.
  • и многое другое…
Интернет предоставляет так много услуг, что изменил нашу жизнь.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Вирусы и компьютерные угрозы

Вирусы и другие компьютерные угрозы почти так же стары, как сама информатика.

Вирус — это программа.

При запуске она делает (более или менее) следующее:
  • Ищет другую программу на жёстком диске компьютера.
  • Если эта программа уже заражена, возвращается к пункту 1; если не заражена — переходит к пункту 3.
  • Вирус делает копию самого себя и вставляет её в заражаемую программу.
  • Теперь эта заражённая программа при запуске будет заражать другие программы.
  • Вирус принимает меры предосторожности (в зависимости от того, как он написан), чтобы не вызывать подозрений: например, не изменяет дату создания программы, маскирует свой размер в байтах (вирус увеличивает размер файла), но умелый программист может это скрыть и многое другое.
  • Настоящий вирус не наносит вред сразу, а ждёт некоторое время, не создавая неудобств (подобно биологическому вирусу), чтобы заразить как можно больше файлов и компьютеров (если заражёнными файлами обмениваются, другие компьютеры тоже заразятся).
  • По прошествии запрограммированного времени, когда вирус уже распространился, выполняется запланированное вредоносное действие: от «шалости» вроде вывода сообщения на экран до полной потери информации или её захвата и т. д.
Кроме вирусов существуют трояны, или троянские кони.

В отличие от вирусов, трояны не размножаются и не заражают другие файлы — это не их способ действия. Троян — это программа с обычным внешним видом. Более того, они часто маскируются под полезные и известные программы, используя то же имя, тот же размер (добавляя мусорный код, чтобы уравнять размер с подменяемой программой), иногда даже снабжаются упаковкой и обложкой, чтобы не вызывать подозрений.

Но это лишь обёртка.

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

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

Неясно, правдива ли эта история, но в любом случае она правдоподобна. И этот приём работает.

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

КАК ЗАЩИТИТЬСЯ ОТ ЭТИХ УГРОЗ

Есть несколько правил, которые могут хорошо защитить нас (точнее, наш компьютер):
  • Использовать обновлённые операционные системы. Создатели вирусов изучают и анализируют уязвимости в операционных системах. Они не колеблясь воспользуются слабым местом. Если система обновлена, вы усложните им задачу. Если же используется старая и к тому же необновлённая ОС, компьютер может стать проходным двором для вирусов.
  • Не запускать неизвестные программы только «чтобы посмотреть, что они делают». А если это необходимо, сначала проверьте их обновлённым антивирусом. Не доверяйте даже официальному программному обеспечению. Однажды на предприятии, где я работал, было куплено фирменное официальное ПО. Чтобы установить его на ПК, я распечатал и открыл коробку, внутри была дискета… заражённая вирусом «omicron» (по данным тогдашнего антивируса). С тех пор прошло много лет, но после того случая я уже не доверяю.
  • Разумеется, иметь хороший и обновлённый антивирус и файрвол (брандмауэр), что делается периодически и автоматически через интернет. Очень важно, чтобы они были обновлены. Не все антивирусы одинаково мощны. Выберите тот, которому доверяете…
  • Делать резервные копии хотя бы самых ценных файлов — неплохая идея.Для этого лучше всего подойдёт флешка (pen drive) или внешний SSD-диск, у которых уже достаточно большая ёмкость и которые позволяют копировать не отдельные файлы, а весь внутренний жёсткий диск целиком.
  • Осторожнее с электронной почтой — это ещё один источник поступления большого количества мусора: не только вирусов, но и фишинга и других методов слежки, которые могут привести к краже учётных данных, паролей и т. д.
Правило такое: не обращайте особого внимания на нежелательную почту и будьте очень осторожны с броскими письмами, иногда с шокирующими или удивительными сообщениями, призывающими щёлкнуть по ссылке. Не делайте этого! НЕЛЬЗЯ ПЕРЕХОДИТЬ ПО ССЫЛКАМ В ПОДОЗРИТЕЛЬНЫХ ПИСЬМАХ.

Если вас приглашают зайти на страницу, например вашего банка, не делайте этого по ссылке, которую кто-то прислал в письме: лучше самостоятельно введите адрес сайта банка в браузере: www.названиебанка.и т.д.

[*]Помните, что никто и никогда не должен запрашивать у вас пароли (и вы не должны их сообщать), кроме как на начальном экране соответствующего сервиса. Например, если вы входите в Gmail, логично, что придётся ввести логин и пароль при запуске этого сервиса, но нигде больше вы не должны сообщать свой пароль от Gmail ни при каких обстоятельствах.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

5. Пределы оперативной памяти RAM. Проверка: сколько памяти у нас есть

В компьютере есть несколько видов памяти, две из них очень важны:
  • Средства массового хранения: диски, флешки…
  • Оперативная память RAM — внутренняя память ПК, используемая для выполнения программ.
Из этих двух нас сейчас интересует вторая — оперативная память RAM.

Хорошая новость: предел в 64 Кбайт памяти у классических Basic преодолён. Если посмотреть на последнюю ревизию YaBasic, она датируется 2020 годом, то есть совсем свежая, а это значит, что YaBasic «жив». Скорее всего, YaBasic создавался с учётом ограничений памяти 32-битных машин, а не 16-битных. С 32 битами можно адресовать примерно 4 Гбайт памяти, тогда как с 16 битами — только 64 Кбайт, хотя с помощью трюка «сегментированной памяти» можно было адресовать до 1 мегабайта. Отсюда и то ограничение памяти в MS-DOS (и первых версиях Windows): только 64 Кбайт для данных, ещё 64 Кбайт для кода, 64 Кбайт для стека и ещё 64 Кбайт для кучи.

Теперь это не так. Теперь у нас есть простор, и я это продемонстрирую, определив супер-переменную размером более 1,7 Гбайт, заполню её данными, а затем обратимся к этой переменной и убедимся, что она заполнена, и при этом ПК не зависает и не делает ничего странного.
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

Создание супер-переменной на 0,5 Гбайт (500 мегабайт)

Сначала создадим таблицу из ОДНОГО МИЛЛИОНА элементов, и каждый элемент этой таблицы будет содержать 500 символов. То есть примерно 500 мегабайт, полгигабайта. И эта таблица будет находиться в оперативной памяти RAM, а не на диске. Если нужно обрабатывать такую таблицу, скорость будет очень высокой, потому что это оперативная память.

Стоит подчеркнуть, что в такую таблицу вполне может поместиться избирательный список средней или крупной провинции с миллионом избирателей. И у нас ещё останется 1,2 гигабайта свободными…

Не страшно, если сейчас небольшая программа, которую я использую в видео ниже, понятна не на 100%, но я постараюсь, чтобы всё было ясно:

Код: Выделить всё

1     Clear Screen
2     Dim tabla$(1000000)
3     cadena$ = String$("A",500)
4     print "Начинаю присваивать значения таблице из 1 миллиона элементов"
5     for i = 1 to 1000000
6        tabla$(i) = cadena$
7     next i
8     print "Я закончил присваивать миллион элементов"
9     t$ = Inkey$
10   for i = 1 to 1000000 step 1000
11      print tabla$(i)
12   next i
13   Sub String$(a$,Longitud)
14   Local x, b$
15   b$ = ""
16   For x = 1 to Longitud
17      b$ = b$ + a$
18   next x
19   Return b$
20   End Sub
21   End

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

Инструкция №2 резервирует место в оперативной памяти, задавая размер переменной Tabla$ в один миллион элементов с помощью оператора DIM, который служит для… задания размеров таблиц и/или матриц.

Так: DIM Tabla$(1000000)

Теперь у нас зарезервирован миллион алфавитно-цифровых элементов (переменная Tablaсодержитсимвол‘содержитсимвол‘` в конце, что в Basic означает строковый тип).

Хорошо, но сколько символов содержит каждый элемент этой таблицы?

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

Ещё одна вещь, которую стоит отметить: исчезает и предел в 255 символов для строковой переменной. Строковую переменную можно заполнить огромным количеством символов. В нашем случае мы поместим по 500 символов в каждый элемент. Чтобы присвоить значение миллиону элементов переменной Tabla$, мы не будем использовать миллион инструкций одну за другой, а применим приём, называемый циклом (мы рассмотрим его позже).

Строки с 3 по 8 включительно заполняют миллион элементов переменной Tabla$.

Строка 3: присваивает переменной Cadena$ строку из 500 букв «A».
Строка 4: выводит сообщение на экран.
Строки 5–7: цикл типа For-Next. Он служит для повторения некоторой инструкции n раз.
Строка 8: выводит на экран ещё одно сообщение, чтобы было видно, что цикл for-next завершился.

Обратите внимание: время, которое проходит между строками 4 и 8, — это время выполнения цикла for-next, что даёт представление о скорости компьютера. Конкретно оно показывает, сколько времени занимает присваивание миллиона значений переменной Tabla$.

Строка 9: останавливает программу до нажатия любой клавиши.

Строки 10–12: ещё один цикл for-next, но на этот раз для вывода на экран элементов переменной Tabla$, которые печатаются с помощью оператора Print (печать) в строке 11. Эти три строки очень важны, потому что показывают, действительно ли всё сработало или программа «падает» и зависает. В видео видно, что всё работает. Это означает, что YaBasic может работать — пока что — с половиной гигабайта, и притом с одной-единственной переменной (Tabla$).

Строки 13–20: это подпрограмма, которая была вызвана в строке 3 для заполнения переменной Cadena$ пятьюстами буквами «A». Подпрограммы выполняются только тогда, когда их вызывают (как это было сделано в строке 3). Поэтому, когда указатель программы доходит до подпрограммы, он перепрыгивает через неё, не выполняя. Таким образом, мы доходим до последней строки 21, где стоит оператор End, означающий «Завершить программу».

В видео я провожу дополнительные проверки, например увеличиваю размер Tabla$ с 1 000 000 элементов до 3 500 000 элементов. Программа продолжает работать, а это означает, что используется уже не 0,5 гигабайта, а примерно 1,75 гигабайта.

По сравнению с тем, что было доступно в первых Basic, это огромный объём памяти, и, если я не ошибаюсь, он позволит делать очень и очень интересные вещи…
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

6. Спорные номера строк (уже устаревшие)

В первых версиях Basic было обязательно использовать «номера строк» — это была своего рода метка или адрес для каждой строки кода. Номера обычно ставились не по одному, а с шагом 10. Так, если какую-то строку забывали, можно было вставить новые строки.

Сегодня, и уже довольно давно, номер строки в Basic не обязателен, и я настоятельно не рекомендую такую практику. Однако эта возможность всё ещё поддерживается в большинстве Basic, поэтому, строго говоря, это плюс Basic, и называется он гибкостью (даже если речь идёт о такой неудачной вещи, как номера строк). Вы можете использовать номера строк или не использовать. Другие языки не разрешают номера строк.

Программа БЕЗ номеров строк (рекомендуется):

Код: Выделить всё

Clear Screen
Print "Привет, мир!"
End
Та же программа С номерами строк (устарело, не рекомендуется):

Код: Выделить всё

10 Clear Screen
20 Print "Привет, мир!"
30 End
Аватара пользователя
Anton
Site Admin
Сообщения: 165
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс yabasic от @Terrazocultor

Сообщение Anton »

7. Скорость вычислений

Сколько времени нужно современному компьютеру, чтобы выполнить миллион операций?

Давайте вычислим, сколько времени занимает вычисление миллиона квадратных корней.

Заодно увидим большую разницу во времени обработки:

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

Операции с памятью очень быстрые.
Вывод на экран очень медленный.

Посмотрим:

Код: Выделить всё

Rem Вычислить квадратный корень из первого миллиона целых чисел
For i = 1 To 1000000
   j = Sqr(i)
Next i
End
Предыдущая мини-программа вычислила миллион квадратных корней всего за долю секунды.

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

Код: Выделить всё

Rem Вычислить (и показать) квадратный корень из первого миллиона целых чисел
For i = 1 To 1000000
   j = Sqr(i)
   Print "Корень из ", i, " равен ", j
Next i
End
Теперь программа работает гораздо медленнее. Нужно принять то, о чём я уже говорил: математические операции и операции с памятью выполняются намного быстрее, чем ввод/вывод информации на периферийные устройства, например на монитор.