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).



18

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

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

Отредактировано 4130688 (25-10-2018 09:52:04)