Тетрадь

Some shits about BASIC

Колонка 1

procedure p1;
begin
Язык «бейсик» не имеет процедур (которые, вообще-то бесплатно не нужны), а главное — не имеет блоков, называемых функциями (см. K&R, «язык Си»)
end;

Батенька, а зачем Вам функции? В Бейсике? Этот замечательный язык не пригоден для написания больших проектов, что я охотно признаю. Введение функций в него вынудило бы отказаться от столь замечательной вещи, как нумерация строк; язык бы усложнился, и не был бы так прост для изучения. Впрочем, есть DEFFN и подпрограммы…

(* Ответ не убедителен. Это всё равно, что сказать, что танк не предназначен для езды на шоссе. А на фиг он тогда нужен? Deffn — это макроопределение, против которых Вы так воевали. Gosub — всего лишь аналог call’а в Ассемблере. А для изучения гораздо проще Pascal, но об этом в следующий раз *)

Танк нужен, чтобы убивать и не быть убитым, а отнюдь не ездить по шоссе. DEFFN — не макроопределение, а функция в прямом смысле этого термина. Насчет GOSUBа согласен, но что Вы имеете против? Учить проще Бейсик (и на много): для написания программы на Паскале (самой простой) надо знать: типы данных, блочность, видимость переменных и т. п. Вспомни Оккама — надо отсечь всё лишнее!

function Otwet:real; begin
Но ведь мы говорим не об убийстве, а конкретно о написании программ! Deffn в GW-Basic’е (а это истинный «бейсик») не дает больше, чем макрос. Единственно, это функция в Quick-basicе (shit) и в Basic-Plus (не MS). Но главное — в Бейсике не реализован принцип «от простого к сложному». Все равно придется переучиваться!!!
end;

Вы же не требуете, скажем, от Паскаля поддержки, скажем, параллельного программирования — на то есть, скажем, тот же Occam. Так зачем требовать от Бейсика принципа «от простого к сложному»? Юзай Паскаль, Си… У Бейсика другая идеология программирования — «Take it easy». Насчет «переучиваться». Почему не учить сразу C++ и ООП, все равно переучиваться? Надо знать разные идеологии и уметь мыслить в разных терминах.

(* Фортран ничуть не сложнее и значительно богаче, тем более, что для него существует огромная библиотека. А насчет изучения ООП — почему бы и нет? Это Вам оно кажется диким, а Ваш сын может полюбить C++ с пелёнок. Даже TASM уже поддерживает ООП… *)

Не имею НИЧЕГО против ООП, а также Фортрана. Но я бы посмотрел на того, кто начнет учиться с C++. Бедненький… А зачем начинающему (Beginner’s All Purpose…) библиотека?

Резюме:
по-моему, мы друг друга ни в чем не убедили. Тем не менее Вы признали непригодность «бейсика» для решения сколь-либо серьезных проблем…

Колонка 2

void p2(void)
{ Язык «бейсик» не формирует хороший стиль. Я сам полгода переучивался на том же Pascal’е. А стиль, согласитесь, важен для ∀ уважающего себя программиста… }

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

/* Конечно, я согласен с Дональдом Ёхндтом Кнутом и с Вами. Но кроме того, программа, если это не системная утилита, должна быть
а) легко читаема
б) легко исправлена и дополнена
в) иметь возможность, чтобы её использовали как некую библиотечную функцию.
Согласитесь, что «бейсик» не обладает этими свойствами. */

1. Не согласен с в) как с элементом хорошего стиля (ХС) — ХС должен быть в ∀ программе, а в) требуется далеко не всегда.
2. Язык C (пригодный не только для сист. программирования), допускает такой стиль, что хорошим его назовёшь. Даже на Паскале можно написать коряво (goto), если не соблюдать некоторые требования. А если требования соблюдать, то и на Бейсике можно писать «читабельно» и «модификабельно».

{ Ну ладно, в) — это хрен с ним, с Вами можно согласиться, но согласитесь и Вы, что хорошим инструментом (см. Дональда Ё. Кнута) работать куда приятнее, быстрее, удобнее и вообще лучше. А уж если руки не тем концом вставлены — ничто не поможет, даже Pascal, C и Ada. }

Соглашаюсь, поэтому я и люблю Бейсик.

// Это, батенька, сильно отдает мазохизмом.
// Вы, не спорю, имеете нек-рый опыт
// программирования, имеете свой стиль.
// Устройство же «бейсика» не стимулирует
// развитие «читабельного» и «модификабельного»
// стиля.

Всё зависит от того, как учить язык. В Универе, при изучении Паскаля, нам старательно прививались традиции «хорошего» программирования. А если бы Вы учили его сами по описанию языка? С другой стороны, при освоении Бейсика можно привить обучаемому ХС. Согласен, что некоторые вещи можно на Бейсике написать более эффективно в ущерб ХС. Но это хорошо! Надо дать программисту свободу!

char **next(void) { Скажу Вам по секрету, что Паскаль я изучал сам, а на Корухову кое-что забил, тем более что она фанат «goto». А если нужна эффективность, пиши на Си и Ассемблере. Может быть, такой инструмент, как «бейсик» Вам «по руке», но любителей того же Паскаля куда больше… }

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

А) Вы же меня тыкали носом в Pascal и C!
Б) На «бейсике» в силу интерпретируемости нельзя написать сколько-нибудь эффективную программу.
В) Что такое хорошо, каждый понимает по-своему, и найдется не так много извр-цев, которые с Вами согласятся.

По моему, я показал, что сформулированным Вами выше требованиям Бейсик удовлетворяет. Чего же боле?

Колонка 3

subroutine p3
Не будем «махать кулаками после p2», лучше я Вас потом просто побью (шутка).
Программа, написанная на языке «бейсик» не имеет коммерческой или любой другой ценности. Химики — и те пишут на C++.
end.

Насчёт коммерческой ценности могу согласиться — Бейсик не индустриальный язык. А насчет «∀ другой» готов поспорить. На Бейсике можно с успехом писать полезные программы, от которых требуется не real time, а interactive; на нём можно учиться программированию; и вообще он All Purpose.

c Как Вы заметили, «бейсик» язык не
c индустриальный => не All Purpose.
c А всё остальное прекрасно пишется и на другом
c языке. Так зачем создавать себе искусственные
c трудности, когда их и так хватает?

Каждый язык чем-то хорош, чем-то плох. Зачем мне использовать какой-то «другой» язык, если я с успехом могу сделать это на Бейсике, не поимевая никаких «искусственных трудностей», а наоборот? А создание «универсального языка» сами знаете чем кончилось (завершилось).

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

Разговор перестал быть конструктивным. Я считаю, что ряд задач решается на Бейсике проще (и приятней), Вы — нет. Если ничего более конструктивного Вы не имеете, предлагаю приступить к другой теме досрочно.

Пожалуй, я с Вами согласен. Но ведь и разговор-то затевался из-за разногласий. Т. е. Вы признаете, что не смогли меня убедить?

Если Вы не хотите признать, что некоторые вещи делать на Бейсике проще и лучше (чего стоят READ/DATA, встроенная графика и т. д. и т. п…), то, пожалуй, я бессилен.

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

<Form Feed>
'\x0C'

Колонка 4

p4 proc near
В общем-то, все недостатки языка «бейсик» уже сформулированы — невозможность расширения, плохой стиль и коммерческая непригодность. Ни по одному вопросу, к сожалению, мы не пришли к соглашению. Но скажите, ради Бога, почему же такой «хороший» язык уходит из употребления, и даже в школе переходят на Pascal и Лого?
p4 endp

Лого — вообще язык детский, и кому он нужен — не ясно (кроме обучения азам). А тех, кто начинает с Паскаля, мне искренне жаль — они так много теряют… И как правило, этим гордятся, пижоны несчастные.

; «Бейсик» тоже можно обозвать детским языком.
; А ещё — заманчиво, конечно, объявить всех
; пижонами и shit’ом, а себя — на ним, но ведь
; стащат вниз и окунут!

1. На Бейсике всё-таки можно писать приличные вещи, в отличие от Лого.
2. Насчет пижонов — это личный опыт.
3. Насчет стащить — пусть попробуют.

; А) Я убежден в обратном — на Лого можно, на «бейсике» — нет.
; Б) Пижоны — Бог с ними, но кто-то не без основания считает пижоном Вас.
; В) Когда стащат — будет поздно.
; Г) А на вопрос «почему» Вы так и не ответили.

Г) Время изменяется, появляются новые языки, и требовать от школы по старинке учить Бейсик по меньшей мере странно. Но совсем-то от него отказываться зачем — он вовсе не плох.
А) Ну-ну, напиши что-нибудь на Лого.
Б) Ну что ж, если не без основания…
В) Без комментариев.

А, Б, В) Это опять глупые пререкания. Однако если Вы достанете компилятор Лого и поставите задачу, я, пожалуй, потрачу часок-другой личного времени.
Г) Вообще-то, преподаватели тоже не такие уж дураки, и если они считают, что Pascal > Basic, значит, что-то в этом есть.

А, Б, В) Когда достану — обязательно скажу.
Г) После того, как я объяснял одной преподавательнице, что такое цикл FOR/NEXT, а другому — что такое многомерный массив (в 10-м классе), я в них (преподов) больше не верю.

АБВ) Ну-ну, приколемся.
Г) История знает и обратные примеры. Хотя моя информатичка тоже была тупа, как пробка. Заметь, они преподавали «бейсик»…
Д) А на самом деле — все это ерунда. Мы-то понимаем, что Бейсик — «простой, красивый и любимый». Мне просто было интересно поспорить с тобой, но ты не проиграл. Поэтому предлагаю пожать друг другу руки.

Авторы: DouЪle W (курсив), e.g.Orius (прямой шрифт)

Прим. Оригинал написан на фортранке (лист A3 с перфорацией, на обратной стороне — распечатка какой-то программы на Фортране) в четыре колонки — по вопросу на каждую.
См. Почему химики пишут на C++ — Аннотация к книге Д. Рассохина «От C к C++».
См. «Простой, красивый и любимый» — Текст.