Web-программирование на Turbo Basic
По просьбам выкладываю отдельным постом код, написанный ради прикола в форуме Winreview.
Все началось с цитаты в разделе приколов:
XXX
20:10:26 кто в здравом уме будет пейсать веб-скрипты на бейсике?20:11:25 впрочем, .NET показало, что можно пейсать и плеваться вне зависимости от языка
Я решил показать, что это все-таки возможно и даже местами прикольно. Современные версии языка юзать не интересно, поэтому я решил обратиться к истокам – Borland Turbo Basic.
Ранее мне где-то попадался реальный FAQ на тему программирования CGI скриптов на досовом турбо бейсике. Причем у скомпиленных им экзешников был какой-то косяк с stdout, приходилось подставлять костыль, что-то типа заворачивания экзешников в батники. Я не пробовал, но автор клялся и божился, что все работает. В общем, не устоял и попробовал.
Итак:
5 open "out.txt" for output as #1
10 print# 1,"Content-Type: text/html"
20 print# 1,""
30 print# 1,"Hello World!"
40 qs$ = environ$("QUERY_STRING")
50 vn$ = "name"
60 gosub 1000
70 if vv$<>"" goto 100
80 print# 1,"<h1>Please, enter your name</h1>"
90 goto 200
100 print# 1,"<h1>Fuck you, "+vv$+"!</h1>"
200 close# 1
1000 rem Parsim peremennyu QUERY_STRING
1001 rem vn$ - imya peremennoi, vv$ - znachenie.
1010 vt$ = vn$ + "="
1020 vv$ = ""
1030 vp = 0
1040 for i=1 to len(qs$)-len(vt$)+1
1050 if mid$(qs$,i,len(vt$))=vt$ then vp=i+len(vt$) else goto 1070
1060 goto 1080
1070 next i
1080 if vp=0 goto 1200
1090 ls = 0
1100 for i=vp to len(qs$)
1110 if mid$(qs$,i,1)<>"&" then ls=ls+1 else goto 1130
1120 next i
1130 vv$ = mid$(qs$,vp,ls)
1200 return
Да, там действительно есть проблемы с stdout. Обычные операторы PRINT выводят текст на экран. Но перенаправление вывода в файл не работает. А это значит, что Апач не видит и не может передать клиенту вывод экзешника. Я попытался вывести текст в стандартный файл CON, но это не сработало. Поэтому появился такой костыль:
@echo off
cgi.exe
type out.txt
А теперь полюбуйтесь на результат:
Итак, начало положено. Ждем появления в интернете мегапорталов, написанных на Турбо Бейсике. Программисты, вперед! Возродим любимый язык наших предков! Думаю, Хрюкину понравится
TODO: Надо еще как-то научиться ловить STDIN (чтобы POST запросы работали).
P.S. Да, я знаю все косяки этой конструкции, но они устранимы. Это пример, сляпанный на коленке за несколько минут.
Возродим! Программы расчета оптических систем, написанные на Туро бейсике лучше современных.
http://www.proza.ru/2015/05/28/1750
http://www.proza.ru/2015/05/19/1630
На Турбо бейсике можно и музыку писать – https://yadi.sk/d/1g2qF95ogtHyT
послушайте. и не надо иронизировать насчёт отсталости языка
Дмитрий