1

Тема: Вышел №22 журнала

Собственно, как говорится, сабж:

http://dgmag.in/N22/cover_mid.jpg

http://dgmag.in/N22/DowngradeN22.pdf
(5,51 МБ.)

Другие форматы, как всегда, позже.

Жаль, с интервью в этом номере не вышло... Да и я всего одну статью написал, хотя собирался две-три. Надеюсь, всё-таки в следующем номере и то, и другое будет.

Содержание номера по рубрикам:

Теория Downgrade
Новости, события, комментарии (eu6pc&uav1606)
Кибернетика и компьютеры (О. Павлов)


Downgrade-видео
Из России с любовью (В. Рытиков aka eu6pc)
Downgrade-каналы (П. Ярославцев aka paha_13)


Downgrade-железо
Эмулятор в кармане (Д. Колмагоров aka temga)


Downgrade-софт
Инструментарий пользователя PC (А. Шаронов aka Andrei88)
Снова издеваемся над файловой системой (flaz14)
За криптовалютой - в Downgrade! (В. Рытиков aka eu6pc)


Программирование
QBasic как средство прагматического программирования (М. Бабичев aka Антиквар)
Scroll'ы бывают разные (Sh)


Старые игры
Самозагрузочные игры (uav1606)


Юмор
Истории из жизни (А. Шаронов aka Andrei88)



2

Re: Вышел №22 журнала

Урррра! Дождались! Спасибо огромное!



3

Re: Вышел №22 журнала

Сделал DjVu-версию (9,05 MB):
http://dgmag.in/N22/DowngradeN22.djvu

FB2 в работе.



4

Re: Вышел №22 журнала

Спасибо всем причастным за номер!

Позволю себе привести альтернативное мнение на статью «QBasic как средство прагматического программирования» — да простит меня автор, которого я, на самом деле, очень уважаю.

> Такие языки программирования, как С++, Java, Python, C# и т.п. имеют высокий порог вхождения.
Согласен со всем, кроме Питона. Питон имеет огромное количество недостатков и «костылей», и жутко неудобен во многих случаях, например, когда дело доходит до GUI — такова цена кросс-платформенности. Плюс новичка будет сбивать с толку отсутствие обратной совместимости между ветками 2.x и 3.x и т.п.

Но в случае простых консольных утилиток для решения практических задач (о чём, собственно, и говорит автор), Питон, как скриптовый язык, довольно удобен и прост в изучении. Во многом благодаря тому, что для него существует огромное количество библиотек — пользователю только остаётся импортировать их и вызывать методы (в то время как в каком-нибудь C++ пришлось бы писать собственные подпрограммы). Именно поэтому сейчас Python часто используется в качестве языка для обучения программированию.

> Различные диалекты Basic обладают низким порогом вхождения
И такими же низкими возможностями для решения реальных практических задач... Если это не VisualBasic.NET, конечно, но он как раз
> требует владения сложными абстрактными парадигмами

> В технических вузах программирование изучают в течение 2‐4 семестров подряд. И преподают, как правило, С++.
На кодерских специальностях. Но на не-кодерских (и тем не менее технических), это не везде так. У меня, например, был Delphi, потом Matlab. У моего друга был Си (без плюсов).
В старших классах школы сейчас в основном изучают Паскаль (PascalABC.NET). И да, я считаю, что это нормальная практика, Паскаль всегда считался языком для обучения, поэтому очень даже хорошо подходит на роль первого языка. В Паскале как раз предельно понятный и логичный синтаксис, поэтому классическая путаница в стиле C++ «++i против i++ против i+=1 против i=i+1» там исключена.

> Как начать работу с QB пользователю современного компьютера? Windows 7 и более новые не позволяют напрямую запускать DOS‐овские программы. Самое простое в этом случае – использовать  эмулятор  DOS‐овской  машины DOSBox.
Ответ неверный :-) Существует «клон» QBasic под названием QB64. Он полностью бесплатный (лицензия LGPL), копирует привычный «олдскульный» интерфейс оригинала, но при этом портирован на современные версии Windows, Linux и Mac OS, а значит, поддерживает современные фичи вроде работы с буфером обмена в редакторе кода. И не требует никаких неудобных «костылей» вроде эмулятора.

BASIC тоже был моим первым языком (и долгое время оставался единственным), но это не повод в 2018 году держаться за QBasic и предлагать запускать его через эмулятор, в то время как с тех пор появились куда более удобные инструменты.

Я сходу могу назвать причины, почему QBasic не может считаться языком для решения современных практических задач:
- проблема с кодировками, Unicode;
- отсутствие поддержки регулярных выражений;
- отсутствие работы с сетевыми протоколами;
- очевидные вопросы скорости выполнения программ, невозможность обработки больших объёмов данных (int64, например, тоже нет).

И это, прошу заметить, не какие-то супер-сложные вещи из разряда “rocket science”, это современные реалии.

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

Отредактировано mr_r0ckers (24-02-2018 12:11:55)



5

Re: Вышел №22 журнала

mr_r0ckers пишет:

Существует «клон» QBasic под названием QB64.

Спасибо за ссылку, интересная программа, под XP вполне себе работает. Жаль, что русского языка там не нашёл, так что для обучения в таком виде не совсем подходит.
Насчёт QBasic - пожалуй, если сделать какой-то простой в установке пакет, чтобы там и DOSBox был, и всё прочее необходимое, тогда, как мне кажется, его вполне можно использовать для обучения. Не думаю, что для решения простых расчётных задач или обучения принципам программирования обязательно нужен Unicode, int64 и прочее...
Вообще, надеюсь, что Антиквар подключится к дискуссии. :-)



6

Re: Вышел №22 журнала

УРА ! :-) cool



7

Re: Вышел №22 журнала

uav1606 пишет:

Спасибо за ссылку, интересная программа, под XP вполне себе работает.

Не за что!

uav1606 пишет:

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

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


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

Что касается мат. расчётов, то я могу предложить такие варианты:
- простые быстрые расчёты -> wolframalpha. Прекрасная и мощная система, на самом деле, недостатки — требуется интернет, и многое теперь доступно только в платной Pro-версии (году в 2011 бесплатных возможностей было куда больше);
- всякие матрицы-дифуры -> MathCAD (если есть деньги ;-) или фриварная SMath Studio (сам не пользовался). Они, к слову, позволяют составлять внутри небольшие программы с циклами и ветвлениями для всяких итеративных расчётов;
- Matlab или его GNU GPL клон GNU Octave для всего остального. Это вообще полноценные скриптовые языки, позволяющие решать широкий круг задач.
А для любителей старых систем существуют ранние версии MathCAD и Matlab под DOS.

Простой пример того, чего нет в QBasic — построение графиков. Конечно, можно написать или найти функцию для этого, но зачем? [При условии, что мы решаем практическую задачу и нацелены на максимально быстрое получение результата, а не учимся писать собственные граф. библиотеки.] Ведь все вышеперечисленные системы позволяют «из коробки» строить графики, в том числе и трёхмерные.

Вообще, надеюсь, что Антиквар подключится к дискуссии. :-)

Да, я тоже!



Re: Вышел №22 журнала

QB64 это хорошо. Жаль, что я про него не знал. Надо будет написать про него в продолжении статьи. Но у него есть некоторые минусы: нет русского help-а, пакет содержит более 8000 файлов, запуск программы на выполнение происходит довольно медленно (т.к. при этом идет компилляция), простейшая программа, скомпиллированная на QB64, полностью занимает 3-дюймовую дискету.

Насчет кроссплатформенности: старый QB можно запускать в ДОС и Win9x/2000/XP напрямую, а в современных Win/Lin - через эмуляторы.
И чем плох эмулятор DOSBOX? Он прост в настройке и заодно позволяет использовать другие ДОС-программы.

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

"- проблема с кодировками, Unicode;
- отсутствие поддержки регулярных выражений;
- отсутствие работы с сетевыми протоколами;
- очевидные вопросы скорости выполнения программ, невозможность обработки больших объёмов данных (int64, например, тоже нет)" - эти проблемы актуальны для программиста-профессионала, создающего софт для современных систем. Любитель может даже не знать, что такое регулярные выражения  smile И тем не менее, делать расчеты и писать игрушки на бейсике. Насчет скорости и int64 - для таких случаев есть FreeBasic.

"И такими же низкими возможностями для решения реальных практических задач..." - мы наверно понимаем под задачами что-то разное. Для меня задача - это не то, что решает профессиональный программист (например, создание какой-нибудь новой игры, распределенной вычислительной системы, сетевого бухгалтерского приложения или АСУТП), а то, что доступно для понимания рядового пользователя и экономически нецелесообразно для решения профессионалами. Вот допустим, мне надо перевести градусы Фаренгейта в градусы Цельсия. Конечно, сейчас существует множество готовых программ, которые это делают. Но лезть в поисковик, и искать программу для этого дела, попутно отсеивая 90% мусора, смотря на рекламу и рискуя получить вирус? Если можно запустить QB и за минуту написать три строчки кода... А если надо перевести Цельсия в Реомюра? Или посчитать параметры сетевого трансформатора? Или перевести dBm в милливатты? Конечно, есть и такие программы, но быстрее их сделать самому, чем искать.

Отредактировано Антиквар (28-02-2018 05:49:50)



9

Re: Вышел №22 журнала

Когда будет объявлен набор для номера 23?

по поводу дискуссий QB: в win7 отсутствует поддержка режимов VGA, обойти этот глюк можно с помощью бубна и плясок.
Хотя, удобнее запустить QB под DosBox.

QB64 мне не понравился, честно говоря, лучше уже обратиться к PowerBasic



10

Re: Вышел №22 журнала

Да вот тему обсуждаем:
http://dgmag.in/forum/viewtopic.php?pid=3390
Пока не решили.
Но, в любом случае, как обычно, будут приниматься статьи и на свободную тему.



11

Re: Вышел №22 журнала

Антиквар, спасибо за ответ!

И чем плох эмулятор DOSBOX? Он прост в настройке и заодно позволяет использовать другие ДОС-программы.

Тем, что не нативное приложение со всеми вытекающими последствиями, например:
1. проблемы с кодировками (русский текст в bas-файлах превратится в "крокозябры" в нативных Win редакторах вроде Wordpad и Notepad);
2. нет буфера обмена. Очень часто в процессе работы над программой нужно слазить в другой файл и скопировать оттуда кусок. Или, например, скопировать из какого-то документа — из вашей статьи, например;
3. я бы поспорил о том, что полная установка и настройка происходит легко: сам эмулятор, GUI к нему, русификатор DOS'а, среда программирования... — получается большой комплект. Довольно сложно для типичного современного пользователя (если он не интересуется старыми ПК и т.п.). Мой товарищ, например, изучает программирование на Си с web-IDE, т.е. пишет  и запускает программы прямо в браузере — довольно показательный пример, я считаю.

эти проблемы актуальны для программиста-профессионала

int64 — соглашусь. Но Unicode и работа с http(s) — это современные реалии, а не что-то сугубо специфическое для IT.

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

Да может, может. Только получится индусский код smile У меня даже есть история на этот счёт. Когда я был маленьким и глупым, решил на VB написать оболочку-интерпретатор текстовых квестов (что-то вроде Z-Machine или современных движков визуальных новелл Ren'Py, только гораздо примитивнее). Там был свой скриптовый язык, позволяющий выводить текст, изображения, аудио, добавлять список игровых действий, использовать внутриигровые переменные, организовывать ветвления и т.п.

Всё бы хорошо, но получившийся "скриптовый" язык требовал неукоснительного соблюдения синтаксиса, вплоть до пробелов в нужных местах, заглавных\строчных букв и т.п. Потому что в программе-"интерпретаторе" везде были строгие сравнения, а "парсинг" аргументов был организован с помощью оператора Mid$, который получал это значение из "нужной" (прибитой гвоздями прямо в программе) позиции в строке. Соответственно, любой лишний пробел сдвигал аргумент, и Mid$ вырезал уже не то, что нужно.

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

мы наверно понимаем под задачами что-то разное

Нет, я примерно в таком же ключе и рассуждал.

Вот допустим, мне надо перевести градусы Фаренгейта в градусы Цельсия.

И каждый раз запускать DOSBOX, чтобы выполнить конвертацию? Хм...

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

Однако я соглашусь с тем, что существуют такие платформы, где Basic действительно оправдан. Ну, например, если вам вдруг захочется написать что-то для Commodore 64 или GameBoy Advance. Но, опять же, написание программ для подобных экзотических девайсов мало связано с решением практических задач.

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



12

Re: Вышел №22 журнала

интересно, чем так хорош QB? не раз сталкивался с тем, что сырок не компилируется. ни PowerBasic ни PureBasic не могут этим похвастаться.

И что такое .EXE, созданное компилятором? не байт-код плюс интерпретатор?



13

Re: Вышел №22 журнала

По-моему, у оригинального QBasic был только интерпретатор, а вот у QuickBasic - уже полноценный компилятор.



14

Re: Вышел №22 журнала

в 4.50 есть компилятор.



15

Re: Вышел №22 журнала

Так это как раз QuickBasic, а не Q. Это просто разные программы, хотя их часто называют просто QB, а ещё путаница с современными возникает, типа QB64.



16

Re: Вышел №22 журнала

Хех, а нас как-то на Турбо-Паскаль 7.0 или 7.1 (не скажу сейчас - не вспомню :-)) сажали - собственно, и использовали мы его как раз как Антиквар предлагает - как крутой калькулятор. И лабораторные когда-то делали по интерполяциям - у меня тогда не получилось нормально график вывести на экран, хотя численно результаты получались нормальные, но рисовалась параллельно еще одна линия - в какой-то момент.
После еще считали рассчетку по электростатике - надо было для нескольких точек сделать одинаковые вычисления - когда я это дело считал вручную - казалось, что ошибаюсь - там должен был образоваться максимум и потом результат вычислений с каждой точкой должен был уменьшаться. У меня же все рос и рос. Но когда написали программу.. получили те же самые результаты, что вручную. Зато товарищ тут же предложил увеличить количество точек - для проги-то это не проблема. Увеличили и получили желаемое - явный максимум и начало спада. Даже потом это дело в файл текстовый сохраняли :-) - пришлось интернет напрячь, чтоб узнать, как же это делается :-)



17

Re: Вышел №22 журнала

Паскаль хорош, да. Его тип данных "множество" очень удобный.
Да и нас в институте кормили - от численных методов до всего возможного. Я даже фрактал Мандельброта рисовал, шокировал народ(:

Когда-то я считал данные для Спектрума(несколько эффектов мелькнуло).
Сейчас есть другие более удобные средства(не для ms-dos).