Давайте выпьем
Место сдается
 

Алгоритмически неразрешимые проблемы

ПРЕДУПРЕЖДЕНИЕ.
Все написанное здесь может абсолютно
не совпадать с мнением пишущего.

1.  ЯЗЫЧЕСТВО ЭПОХИ АЛГОРИТМИЗАЦИИ

0101010101

     Все языки программирования создавались как самые лучшие - а получались языки ни куда не годные (с точки зрения всех, кроме авторов). Фортран, ПЛ/1, Кобол... Причем, Фортран, как самый негодный, был и самым популярным. И попортил же он крови теоретикам за 25 лет своего процветания - море.

Фортран-таракан,
ПЛюшкин/1,
Кобол-осел.

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

Правильная программа
содержит мало ошибок.

     Но как определить, что такое хорошо, в столь деликатной сфере, как программирование? Американцы попытались это сделать по инициативе и под руководством военных. В результате, дорога к Аде оказалась устлана  добрыми намерениями и трупиками человечков (соломенного, деревянного, оловянного, железного, песочного, каменного и  других). И в 80-ом году была объявлена победа! Но Пиррова, в смысле сложности. Поэтому внедрять пришлось не без угроз. Ада - это прошлое и будущее процедурного программирования. Это вершина и апофеоз, но в форме тупика.

Язык - это то, что отличает
программера от человека.

     А ассемблеры и не думали капитулировать. За их изощренной (извращенной) вседозволенностью стояли умелые руки и крепкие головы настоящих мужчин-программистов.

- Ну и тип!
- Нет ли на него данных?
- Инкапсулировать таких надо!
- Без права рандеву!

     Для них Ада, что взбесившийся слон для муравья-трудоголика.

Порочная практика -
критерий истины.

     Но гибель обычно приходит с обратной стороны. Вот, если  читать теоретиков:  Дейкстру,  Хоара, да и того же Бэкуса (отрекшегося от своего родного Фортрана), а потом делать все наоборот, то получишь язык Си. Без особого шума и военных Деннис Ритчи язык Си и получил, собрав все мыслимые, а главное - немыслимые, безобразия воедино. Получилось здорово.

Порочная истина -
стимул для практики.

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

А все-таки она ВИРТится!

     Рядом, но высоко, стоял Паскаль с учительской указкой. Он сеял разумное, доброе, вечное. Призывал к здравому смыслу. Но народу еще со времен Фортрана было наплевать на формализацию семантики. (Модула-2  вообще "от  кутюр", а шабашить лучше в телогрейке). Но предприимчивый ученик Борланд уже подложил ему кнопку на стул и на парте нарисовал что-то графическое...

Регулярно выражаясь -
грустно, господа!

     Но это все предистория. Новая эра началась, когда "маленький  треп-80" обернулся  об'етной-ориентированностью. Но и тут появились мутанты и испортили, если не все, то многое - родился Си++. Он поставил на гениальной идее крест! Причем, два раза.

2. ВАВИЛОНСКОЕ ЯЗЫКОЗНАНИЕ

     Когда Главный Программист решил наказать возомнивших о себе. Он на Вавилонской конференции лишил их всех языков, кроме Си. Разве что предания смутные остались...

БЭЙСИК

1 "У попа была собака" goto 3
2 "И написал" goto 1
3 "Он ее убил" goto 2

ФОРТ

: Прост "дважды два как" . ; OK!

АПЛ

X <- Y <- ро/йота/@#$%&"~?х|Ы

ЛОГО

Черепашки-нинзя все ушли на фронт, а больше ничего в языке нет.

ЛИСП

(((ламбда Ю ((((((((((кар(кар(кар(CHEESE))))))))))))))))))))))))(0)

РЕФАЛ

k'м_н_о_г_о__п_р_о_б_е_л_о_в ~ k'пробел -|
k'беспробел ~ беспробел

ПРОЛОГ

аппендикс ([Х|L1],L2,[Х|L3]) :-( аппендикс (L1,L2,L3).

FP-Бэкуса

Apply-To-All/Reply-To-Nobody [F o G] o H :<1,2,3>

ОККАМ

PAR
   ruka.levaya  ? inmos
   ruka.pravaya ! transputer

OPS-5

(P рак-свистнет ^ свист ссссссс ^ место гора -> создать-конференцию ^ лом)
С вероятностью 0.837465218456 и нечеткостью 0.8/0.8+0.9/0.9+1.0/7.0

... а далее совсем неразборчиво.

3. ОБ'ЕКТИВКА ОБ ОБ'ЕКТЕ

     Главное в ООП (не в Организации Освобождения Палестины, а  в  Об'ектно Ориентированном  Программировании) - не напрягаться. Если нужна программа - надо взять об'ект, и пусть он будет  программой.  Но  не  забывая,  что,  в соответствии   с   рекурсивным  материализмом,  всякий  об'ект  состоит  из об'ектов. И все!
     Для тех, кто не понял - уточняем: возьмем, например, кошелек, как об'ект. Прежде всего надо показать, что его не стянули, а честно унаследовали. Сам кошелек - от любимого дедушки, а свойства - от вышестоящих кошельков. С помощью Изи (пишется "is-a").

об'ект
|
кошельки, как класс
|
кошельки дедушек, как класс
|
кошельки любимых дедушек, как класс
|
большие кошельки любимых дедушек, как класс

     Кошелек состоит из собственно кошелька и денег. (Поскольку деньги тоже об'ект, то и здесь вопрос наследования стоит не менее остро). Раз собственно кошелек большой, то и денег там может быть много. Например, дедушка накопил там целых сто рублей рублями (отстав от прогресса на две реформы) и больше уже ни один рублик не влезал в тугой кошелек. А внук  эту макулатуру  отдал своему внуку, а сам положил в кошелек сто тысяч двумя купюрами по пятьдесят и еще уйма свободного места осталось. То есть  для разных  купюр ограничения разные на максимальную сумму. А минимальная сумма 0 - долги в кошельке не носят.
     А дальше самое интересное.
     Надо сделать так, чтобы достать из этого кошелька 35 тысяч на конфетки было  НЕВОЗМОЖНО. Можно достать только 50 и получить 13 тысяч сдачи (на две обязательно обсчитают). И не одной, а целой кучей денежек (поскольку купюра в  13  тысяч  встречается  довольно  редко).  В результате сумма в кошельке уменьшится, но денежек станет больше. Все как в жизни.  Так что  передаются из  кошелька не просто суммы (данные), а конкретные об'екты-купюры (точнее, сообщения - каких и сколько). Только так конкретно может кошелек общаться с внешним миром (с другими кошельками, продавцами, должниками, воришками...).
     Деньги должны быть в обороте, хранить по кошелькам - большая глупость. Поэтому важно позднее связывание.  То  есть,  пусть они будут и в разной валюте и в безнале и в кредитных карточках и в чеках. А в кошелек попадут в самый последний  момент, когда за услуги надо платить наличными в валюте и вперед (автор имел в виду всего лишь взятку). Но для этого нужна интерпретация. А ее никто не любит. И не только компиляторы, а прежде всего сама машина Фон-Неймана.

4. ОБ ИНОПЛАНЕТЯНАХ

     1. Однажды Дейкстру спросили:
     - Слабо написать программу по предварительно формализованным условиям.
     - Слабо! - ответил великий программист и убежал писать гениальную книгу о слабейших предусловиях.
     2.  Однажды Хоар занимался в Белфасте верификацией программ последовательно оператор за оператором с помощью условий правильности. Но не менее последовательно террористы  там  же  занимались террором. Взрывы очень  мешали работать. Тогда Хоар написал монографию "Взаимодействующие последовательные процессы". Но из Белфаста все-равно уехал, поскольку террористы его книг не читали, и мешали работать как ни в чем не бывало.
     3. Однажды Флойд рассыпал колоду перфокарт, а когда собрал их в другом порядке - программа почему-то не пошла. Тогда он придумал недетерминированное программирование. Но на русский эту работу не перевели, поскольку  предвидели, что перфокарты через двадцать лет кончатся. В отчаянии Флойд придумал много другого, но было поздно - веры ему уже не было.
     4. Однажды Скотт получил Тьюринговскую премию за  выдающийся  вклад в программирование. Но поскольку за свою жизнь он ни одной программы не написал, то на торжественном вручении торжественно пообещал и впредь не писать.
     5. Однажды Кодд предложил теорию отношений. Это не совсем,  чтобы теория  относительности,  поскольку тянула лишь на Тьюринговскую премию. Но относительные банки сделали на этом состояния разработчикам на  значительно большую  сумму,  чем  все  Нобелевские премии вместе взятые. Так что все относительно.

---
(c) 1993, А.Соловьев



Copyright © 2000-2016 Asteria