Владимир Цай - Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии
- Название:Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии
- Автор:
- Жанр:
- Издательство:Время
- Год:2010
- Город:М.
- ISBN:978-5-9691-0530-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Владимир Цай - Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии краткое содержание
Решение отчаянно смелое – объявить людям, что ты нашел смысл жизни и понял, как устроен мир. Мир это очередное сообщение, разумеется, примет в штыки. А если попробовать выслушать автора? Если попытаться понять логику его поиска «генома Вселенной»? Если согласиться с автором в таком, например, утверждении: «Я не верю в Создателя, так как в этом случае на любой вопрос есть один ответ – так решил Создатель». А вопросов, на которые мыслящей личности хочется найти собственный ответ, очень много… Владимир Цай свои ответы нашел – и продолжил тем самым славный ряд мечтателей, философов, правдо– и смыслоискателей, которых принято было объявлять сумасшедшими – как, например, Циолковского. Или Гегеля, у которого в аттестате об окончании университета было записано, что он «является полным идиотом в философии». Знакомьтесь: Владимир Цай, мировоззренческий искатель.
Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Ответ: Бог надеется, что он никогда не станет программистом.
Профессиональный опыт
Непрерывной математики я не понимал, и вся моя учеба была практически бесполезной с точки зрения получения полезных знаний – университет дал последний импринтинг интеллекту, без которого молодые люди, попадающие в армию вместо университета, просто тупеют.
На пятом курсе у нас появился новый предмет – программирование для ЭВМ (если бы это было на первом, как теперь, я провел бы пять лет с гораздо большей пользой). Машина была «Урал-2», ламповая, занимала огромный зал, а чтобы ввести в нее программу, надо было замкнутую фотоленту установить на сложное устройство, напоминавшее стиральную машину. Система команд была примитивная, например, для модификации адреса данных внутри цикла приходилось изменять адрес ячейки памяти непосредственно в команде – программа изменяла себя по мере выполнения (какая свобода для творчества!).
Тем не менее, принципы работы компьютера не изменились с тех пор и, соответственно, программирование, несмотря на все современные парадигмы, требует от человека тех же качеств, что и в те далекие годы. Суперпрограммист 60—70-х был бы суперпрограммистом и сегодня.
Программировать я стал сразу. На зачетах писал программы за всех друзей и других желающих. Мне это нравилось и получалось легко. Чисто случайно я попал по распределению в вычислительный центр вместо аспирантуры и фактически почти двадцати пять лет программировал. Это моя профессия.
В 1970 году мне пришлось программировать для ЭВМ «Минск-22» в машинных кодах, и я до сих пор помню систему команд «Минск-22». Например, программа вычисления факториала целого числа N! = N * (N-1) * … * 3 * 2 * 1 выглядит приблизительно следующим образом (аргумент N передается в ячейке 0040, результат N! возвращается в ячейке 0041):
7000) – 10 00 7005 0041 переслать 1 в ячейку 0041 (Здесь будет N!)
7001) – 32 00 0040 0041 умножить 0041 на N (Далее в 0040 будет N–1)
7002) – 22 00 7005 0040 вычесть 1 из 0040 (Получить в 0040 N–1)
7003) – 34 00 7001 0000 если после вычитания не ноль, то повторить с 7001
7004) – 30 00 0017 0000 возврат в вызывающую программу
7005) – 00 00 0000 0001 константа – целая 1.
Для отладки надо было идти в машинный зал и работать непосредственно за пультом. Программу набивали на перфоленту и вводили в память машины, а затем скорректированный вариант записывали на магнитную ленту (во времена всеобъемлющего дефицита кое-кто пытался использовать эту ленту в бытовых магнитофонах, но благодаря своим, как кто-то остроумно заметил, абразивным качествам она буквально спиливала магнитные головки несчастных магнитофонов, которые были еще более дефицитны, чем лента). Программист за пультом должен был точно представлять свою программу в памяти. Все данные, команды и адреса читались и набирались в двоичной системе непосредственно на пульте управления ЭВМ. Когда программист работал быстро, он напоминал со стороны пианиста.
Я старался брать машинное время ночью – во-первых, нет конкуренции за время (женщины-программистки, а их было почему-то очень много, предпочитали работать днем), во-вторых, можно работать до результата. Работа мне нравилась, шеф меня ценил.
Мне сильно повезло с первым шефом – Александром Михайловичем Гуляевым. Он был суперпрограммистом. Чтобы ввести в профессию, он заставил меня отладить написанный им довольно большой комплекс программ для шахтной вентиляции. После этого я стал одновременно модульным, структурным и, возможно уже тогда, объектно и сервисно ориентированным. Модные парадигмы создаются не программистами, а так называемыми менеджерами. Эти менеджеры никогда ничего не пишут сами и не могут написать в силу отсутствия соответствующих способностей, но полезную функцию (что-то подсмотреть и своевременно прокричать) выполняют. К сожалению, Гуляев никогда не стремился к признанию, рано ушел в себя и умер где-то на станции космических лучей. Другого суперпрограммиста, моего старшего, как он любил говорить, приятеля Володю Медведева, который мог написать эффективную программу для чего угодно, вообще убили при дурацких обстоятельствах. Хорошие программисты не часто добиваются в жизни того, чего могли бы, и чего принято добиваться, и чего всегда добиваются менеджеры.
Потом был долгий период ЕС ЭВМ и алгоритмических языков – «Фортран», «ПЛ/1» и др. На одном из алгоритмических языков программа вычисления факториала могла бы выглядеть так:
fact:= 1; n1:= n;
do while (n1>0); fact:= fact * n1; n1:= n1 – 1; end;
Специальная программа – компилятор – переводит этот текст в машинный код, который может быть выполнен компьютером. Ясно, что записывать программы удобнее на языке, но от разработки алгоритма язык не освобождает.
Отражая объектно-ориентированную структуру окружающего мира, алгоритмическое программирование (через модульное, структурное и др.) эволюционировало в объектно-ориентированное, в котором объект, тем не менее, представляется совокупностью алгоритмов.
Другой подход в программировании связан с разработками в области искусственного интеллекта. Теоретической базой искусственного интеллекта является логика, а в практическом программировании используются языки функционального и логического программирования.
Например, функцию вычисления факториала можно определить в виде функции следующим образом:
fact (N) = N * fact (N–1); fact (0) = 1
Очевидно, это рекурсивное определение более точно соответствует природе функции. На языке функционального программирования приведенное определение является программой. Любой алгоритм можно представить в виде рекурсивной функции, но представлять знания в виде рекурсии намного сложнее, чем в виде алгоритма.
На языке логического программирования «Пролог» программа вычисления факториала выглядит следующим образом:
fact (0, 1).
fact (N, F) если N1= N–1, fact (N1, N2), F=N*N2.
Этот язык менее естественен для записи функций, но значительно удобнее для представления знаний в виде: если …, то …. Эта форма стала основой технологии программирования так называемых экспертных систем. Программировать экспертные системы просто, но найти эксперта со знаниями и извлечь знания из него в этой форме невозможно.
Я подсел (иначе не скажешь) на «Пролог» и даже основную свою систему написал на «Турбопрологе» (выдающийся продукт компании «Борланд»), а после заката «Пролога» бросил программировать вообще. Оптимисты, которые никогда не бывают правы, но всегда выигрывают, предрекали, что «Пролог» будет играть роль «Фортрана» в 2000 году. Увы. Разумеется, «Пролог» имеет недостатки, например, cut (встроенный предикат «Пролога» для обрезания перебора), который убивает логическую сущность, но без которого невозможно писать эффективные программы. Думаю, что дело не столько в недостатках Пролога, сколько в неготовности человека. Несколько раз я читал лекции по программированию на «Прологе» – в лучшем случае только один студент из группы был в состоянии преодолеть алгоритмическое мышление.
Читать дальшеИнтервал:
Закладка: