Компьютеры в моей жизни


Моя первая научная публикация была сделана по результатам моей дипломной работы. Как раз для выполнения этой работы я приехал в Москву из Свердловска (теперь Екатеринбурга) вместе с моим другом по учебе в Уральском университете Костей Кикоиным, который был племянником академика Кикоина, одного из директоров Курчатовского Института. Было это в 1967 году. В процессе дипломной работы я выполнял расчет двумерного интеграла, используя простой электрический калькулятор, который был способен делать 4 операции ( + - * / ) но с очень высокой точностью. Калькулятор имел размер с половину письменного стола, но мы были рады, что имеем такую "мощную" технику. Иногда, когда мне было лень идти в институт, я делал расчеты прямо на бумаге, используя логарифмическую линейку -- главный вычислительный инструмент в те времена. Тем не менее, эта работа оказалась очень полезной -- она цитируется в книге Пинскера и представляет интерес до сих пор. 28 лет спустя во Франции (ESRF в Гренобле) один немецкий студент спрашивал меня о тепловом диффузном рассеянии рентгеновских лучей, и среди других статей он принес перевод и этой моей статьи.

Вскоре после этого, уже в аспирантуре, я имел возможность работать на настоящем компьютере. Мой первый компьютер назывался "M20", потому что он был способен делать 20 тысяч операций в секунду. Он был очень большой и понимал только команды в двоичном компьютерном коде. Поэтому программисты должны были писать программы подобные показанной ниже

   05 1234 3425 5674
   16 2233 2341 0000
   02 5674 1111 3425

и так далее. Здесь каждое число означает восьмеричное целое (три бита в одном числе). Например, 5 = 101, 1234 = 001010011100. Первая колонка содержит код операции, остальные три колонки определяют адреса двух операндов и результата. Каждый программист имел свой собственный язык высокого уровня и использовал его прежде, чем писать числа. Например, вышеприведенный код означает (я не помню точно, но принцип правильный)

   *   a  b  c    ( c = a * b )
   gt  A  B  -    (сохранить данный адрес в A, перейти к адресу в B)
   -   c  d  b    ( b = c - d )

Программирование было рутинной работой, даже была такая специальная профессия, и обычно физики были неспособны писать программы. Однако физик-программист имел преимущество, поскольку он был способен решить что-либо, что не могло быть решено аналитическими методами. Вскоре после этого появились алгоритмические языки высокого уровня. В нашем компьютерном центре первым языком был ALGOL - новый язык по сравнению с языком FORTRAN. Однако этот ALGOL тратил заметное время на трансляцию и делал программы, которые работали в несколько раз медленнее по сравнению с прямым программированием. Поэтому опытные программисты не пользовались им. Я выучил ALGOL, но я также редко им пользовался.

Следующий, относительно продолжительный период был связан с компьютером BESM-6. Это была уже вполне хорошая машина, которая делала 1 миллион операций в секунду. Такая скорость была достаточна для использования алгоритмического языка высокого уровня, и основным языком на этом компьютере был FORTRAN. Программисты писали фортранный код программы на бумаге, затем специальная машина типа печатающей машинки переводила текст в пакет перфокарт (специальные картонные карточки с дырочками). После чего множество таких пакетов перфокарт проходило через читающее устройство, и компьютер принимал фортранный код, каждый раз транслировал его в компьютерный код и считал по программам, одну за другой без остановки, не запоминая откомпилированный код.

Главный расчет выполнялся по ночам, в то время как днем делались различные вспомогательные работы. Обычно программисты сдавали свои программы вечером и получали результаты расчетов утром на следующий день. Ночью специальные люди, называемые "операторами" играли роль кочегара около этой печки. Каждая ошибка в программе вела к фатальному исходу отсутствия результатов расчетов. Необходимо было исправить ошибку и ждать следующего дня, чтобы получить результат. Поэтому, чтобы спасти время, нужно было решать несколько задач одновременно снижая, тем самым, вероятность фатальных последствий полного отсутствия результата.

На такой способ программирования ушли мои лучшие годы. Практически все мои научные работы советского времени были выполнены таким способом. Но это была хорошая школа. Было не так просто найти ошибку, имея фортранный код в 1000 строк и только одну информацию, что он не работает, да еще обычно место, где произошла остановка. Мы не имели графики в современном понимании. Результаты расчетов печатались на широкой длинной бумаге по 120 символов на строку. Поэтому мы писали специальные программы, которые печатали графику используя индекс строки как x-координату (неограничена) и индекс символа в строке как y-координату (не более 120).

Такие графики имели большой размер и использовали много бумаги (бумага текла как река из толстых рулонов, а результаты мы получали толстыми пачками) но они спасали время, потому что чертить графики по числам -- не очень приятная работа. Интересно, что у окна выдачи результатов стоял большой железный ящик, куда программисты сразу выбрасывали ошибочные распечатки. Я так не делал, и использовал эту бумагу для письма. Но ее все равно было очень много.

Мы получили IBM персональный компьютер только в конце восьмидесятых. Наш начальник Отдела к тому времени уже был академиком, и ему выдали персональный компьютер за заслуги. Но он им пользоваться не стал, и мы все, сотрудники Отдела, работали на нем по расписанным часам. Тогда были в моде персональные компьютеры коллективного пользования. Это было замечательное время, но одновременно это было начало новой жизни и конец старой жизни. В старой жизни я имел время поиграть в теннис, выпить вина в компании друзей и просто ничего не делать. Новая жизнь ударила по голове обилием информации. Сначала она была на дискетах, сейчас на компакт-дисках, флэшках и в Интернете. Я работал на различных персональных компьютерах и выучил различные языки программирования: Basic, Pascal, C, Clarion, Prolog, и так далее.

Я пытался делать программы на этих языках но в этом не было необходимости для меня (исключая Basic, на котором я много работал на первом 8-битовом персональном домашнем компьютере). Мой сын, попав в физ.-мат. школу заставил меня купить ему у спекулянтов немецкий компьютер фирмы Sсhneider, который считывал информацию с дискеты, а показывал информацию на экране цветного телевизора. Как ни странно, с цветом на компьютере я впервые познакомился дома, а не на работе.

Моим главным языком программирования, по-прежнему, оставался FORTRAN, потому что Microsoft продолжал традицию IBM/360 компьютеров и развивал FORTRAN в новых версиях. Последний FORTRAN, который я использовал был Power Station 4.0 для Windows-95. Он и сейчас у меня есть, но уже на пенсии. Фортран -- относительно хороший язык, по крайней мере он гораздо более читабелен по сравнению с "C" и не такой глупый как Pascal. Я любил Basic, но это был недостаточно мощный язык, тот, который я знал. FORTRAN существует также на UNIX компьютерах. Например, IBM XLF был почти совместим с FPS 4.0, однако некоторые отличия существовали, и это было довольно неприятно, когда я забывал об этом. Программа работала, но неправильно.

В течение длительного времени я использовал MS Fortran 5.0 для DOS и добавлял мои собственные подпрограммы на ассемблере как расширение к этому фортрану, чтобы иметь возможность выполнить любые операции на компьютере, включая те, которые являются невозможными для простого пользователя. Я не использовал язык Assembler непосредственно, но я его выучил и написал на нем служебные подпрограммы, которые могли быть использованы непосредственно из фортрана. Сейчас программирование на смешанных языках является обычным делом и FPS 4.0 позволяет это делать тоже. Однако, FPS 4.0 способен делать Windows приложения непосредственно, так что Assembler не нужен. Я покупал Digital Visual Fortran 5.0, но даже не устанавливал его. Кое-кто из моих коллег до сих пор использует фортран, уже других версий, но я выпал из фортрана.

Одновременно с новыми языками программирования появилось множество новых готовых программ -- редакторы, графические пакеты, трансляторы с языков, игры. Невозможно знать все и делать все. Однако это интересно и было необходимо. Поэтому у меня стало все меньше времени для игры в теннис, а уж о том, чтобы ничего не делать, я давно забыл. Я смотрел по телевизору только политическую информацию, я читал только научную и компьютерную литературу. Сейчас я знаю много графических пакетов. Я пытался использовать некоторые из них, но я не люблю такую работу. В принципе я мог выучить и использовать любой из них, потому что они у нас были. Однако в традициях моей старой школы я люблю создавать независимые графические программы для своей работы.

Поэтому в течение всей своей жизни я использую только собственные графические программы. Это действительно удобно, потому что позволяет делать любую графику, в частности для интерактивного графического представления всех промежуточных результатов в процессе расчета. Или делать рисунки таких типов, которые невозможны в готовых пакетах. До начала 90-х годов эта форма графики предполагала наличие системы подпрограмм (например Fortran subroutines или C procedures) и необходимость их использования на стадии компилляции. Я тоже шел по этому пути и копил подпрограммы в библиотеках. Однако к указанному периоду я обнаружил, что многие программы включают одни и те же процедуры и поэтому имеют неоправданно большой размер.

Поэтому я решил разработать собственный язык программирования и интерпретатор этого языка на основе развитой библиотеки процедур. Моя собственная идея -- какой язык программирования мне нравится -- состояла в убеждении, что язык должен давать возможность использовать любые примитивные операции, например прерывания DOS одновременно с достаточно разработанными операциями типа встроенного редактора текстов, включая форматированный техт. С другой стороны, редактор должен был быть способен работать с файлом, рассматривая его или как текст, или как систему байтов (программу, например). Последняя модификация работы позволяла, например, редактировать различные небольшие фрагменты файла, сохраняя неизменными всю остальную часть.

Я сделал такую программу и назвал ее "Quick", потому что она позволяла быстро делать различные операции. С другой стороны, по русски "Квик" содержало первые буквы моей фамилии и имени (Кон ВИКтор). Эта программа уже не существует, так как была сделана так сложно, что Виндовс ее не запускает. Она может работать только в ДОС. Тем не менее, остался ее код. Он существует до сих пор. Сейчас я этой программой не пользуюсь. Я потратил два года очень тяжелой работы на ее разработку. Она была очень полезной для меня другие три года прежде, чем умерла. Такая короткая жизнь была у многих программ. Можно сказать, что программа была подобием Windows, но в текстовом исполнении и намного более быстрая. Реальная операционная система Windows и появление 486-х компьютеров убило ее.

После этого я стал использовать другой путь. Развитие компьютеров оказалось настолько быстрым, что библиотека готовых подпрограмм на языке программирования оказалась не нужна, так же как и программа-интерпретатор. Современные пакеты включают в себя множество готовых выполнимых файлов, которые загружаются и работают настолько быстро, что использование процедур не приводит к экономии времени. И более разумным стал способ работы под управлением специальной операционной системы. В принципе любой пользователь сейчас работает в рамках более или менее удобной операционной системы: UNIX (LINUX) или Windows-95 (98, 2000, XP, Виста, 7, 8 ) или iOS. Однако эти операционные системы являются системами очень широкого применения, поэтому иногда они работают намного медленнее, чем это необходимо.

Например, Microsoft Windows - это более или менее операционная система для бухгалтеров и секретарш. Excel - это главная программа, в то время как Word содержит "equation editor" как объект (внешнюю процедуру), далекую от основного ядра. По этой причине она работала медленно при наборе научной статьи даже на Pentium компьютерах. Программа Scientific Work Place (см. на сайте http://www.mackichan.com) является хорошей программой для приготовления научных статей печатного качества, но она очень замкнута. Она не помогает программисту делать программы, напротив, она это запрещает, хотя кое какие вычисления она делает. Латех-редактором этой программы я пользуюсь до сих пор.

Какое-то время назад я считал, что каждая программа, которая решает определенную проблему, должна иметь собственную мини-операционную систему. Однако, возможны обобщения. Например, операционная система только для научных программ. Различные готовые выполнимые файлы могут быть использованы в различных операционных системах такого типа. Я понимаю операционную систему как систему готовых программ, где одна из них является главной (ядром), а другие могут запускаться по мере необходимости. Многие web-страницы имеют как раз такую структуру (HTML язык посредством гипер-ссылок позволяет делать это легко). Это был мой современный взгляд на компьютерное программирование с точки зрения маленького человека, который хочет решить свою маленькую проблему. Однако это относилось только к периоду Pentium-компьютеров и широкого использования локальных сетей.

В это время я использовал свою программу "VKS" для просмотра числовых файлов на экране. Простого нажатия клавиши [Enter] на имени файла в каталоге "Windows Commander" (или Windows explorer) достаточно, чтобы иметь хороший график, где оси координат размечены автоматически. Программа являлась как раз частью старой программы-оболочки "Quick". Для печати графиков на принтере я использовал свою программу "VKPS" - транслятор с моего же относительно простого языка в язык Postscript, которая способна работать с файлами данных различной природы и может делать графику различных типов и в произвольной комбинации этих типов. Эта программа мне очень помогла при работе во Франции в системе UNIX.

Там стоят постскрипт принтеры, и я мог делать графику, не изучая и не используя чужих пакетов. Она до сих пор в рабочем состоянии. Естественно, в соответствие с моей общей идеей относительно языков, этот язык позволяет выполнять довольно сложные процедуры одновременно с включением простых фрагментов на языке postscript непосредственно. Такой режим позволял работать с фотографиями, например. В сентябре 2000 года, я сделал версию 3.0 этой программы, которая позволяет работать с цветными рисунками, поскольку цветные принтеры стали нормальным оборудованием для компьютеров. На этом развитие программы остановилось. И похоже уже навсегда.

Также у меня есть свой собственный калькулятор, работающий в ДОС, который намного лучше, чем Windows калькулятор, потому что он позволяет использовать алгебраические выражения и имеет небольшую память, которая может быть использована в расчетах. Естественно "Maple" опция в Scientific Work Place намного более мощная по сравнению с моим калькулятором (но похожая). Однако, иногда нецелесообразно загружать столь большую программу для простых расчетов. Для этих целей мой калькулятор намного быстрее. Я пользовался им каждый день до тех пор, пока мой компьютер перестал запускать досовские программы. Но еще раньше я сделал аналогичный калькулятор на языке Javascript. Как раз на этот калькулятор (точно такой же структуры, как и досовский) есть ссылка на моем сайте. Я до сих пор часто им пользуюсь.

В таких условиях специальные научные программы могут делать только расчеты и записывать результаты в виде числовых файлов на жесткий диск. С другой стороны, каждая специальная физическая программа может работать под управлением общей "menu" программы, которая позволяет использовать специальную информационную помощь и комбинировать различные операции, включая вызов указанных выше программ (VKS, VKPS или калькулятор) одновременно с редакторами текстов. UNIX является более жесткой операционной системой, поскольку она рассчитана на многих пользователей. Здесь я использовал тот же самый режим через командные файлы. Я сделал программу 'VKPM' (vk=VictorKohn, PM=ProgramManager) которая являлась Windows-95 приложением. Она могла работать с любой вычислительной программой пользователя. При этом показать результаты на графике, сделать Postscript файл и использовать другой сервис оказывается простой и автоматической процедурой.

В 2002 году я получил новый компьютер (ноутбуки я получал в Гренобле, где часто работал) вместе с программой IGOR-PRO фирмы WaveMetrics http://wavemetrics.com. Эта программа удивительным образом соответствовала моим взглядам на программирование. Она состоит из ядра, представляющего собой мини-операционную систему, позволяющую писать свои собственные расчетные и графические программы, и набора уже написанных модулей, встроенных в эту операционную систему. Язык программирования отличается от фортрана -- некоторые операции можно сделать проще, а некоторые намного сложнее, но использование любых модулей, написанных на других языках не представляет проблемы.

Я научился работать в этой среде и кое-что сделал. Интересно, что несмотря на то, что это графически ориентированный пакет (Integrated Graphically ORiented PROgram), мне и в нем часто было удобнее использовать свою собственную графику. Долгие годы я видел как во Франции (я ездил туда на 2 месяца каждый год) народ работал в UNIX с программой IDL (Interactive Data Language), http://www.rsinc.com. Она очень дорогая и там ее ставят на казенные машины. Потом я получил эту программу под Виндовс и бесплатно. Мне дали версию IDL-5.2.

Это похожий пакет, и его преимущество в том, что он работает как под WINDOWS, так и под UNIX в отличие от IGOR-PRO, который в UNIX (Sun) не работает. Но он более дорогой и не у всех есть. Точнее в России наверно практически ни у кого нет. Что касается IGOR-PRO, то соответствующую папку можно просто перенести с компьютера на компьютер даже не имея дистрибутива. Хотя это и незаконная операция, но она работает, и, если эту программу не использовать в коммерческих целях, то состава преступления нет.

В 2003 году передо мной встал вопрос о кардинальной смене языка программирования с возможностью писать, причем относительно просто, многооконные программы и желательно в нескольких операционных системах сразу. Мне подсказали обратить внимание на язык Java. Язык Javascript я знал с 1998 года, но он тогда не годился для серьезного программирования научных задач. С другой стороны, я просто не знал, что язык Java совершенно бесплатный. Я все пытался его где-то купить, но никто не продавал. Летом 2003 года, сделав это открытие, я скачал с сайта http://java.sun.com SDK версии 1.4.2 (которая предлагалась в то время) и стал его изучать. Пришлось прочитать пару книг, которые я также скачал в интернете бесплатно на английском языке. Потом я все же купил одну книжку на русском и очень дешево (за 50 рублей). Но читать ее уже не было надобности. Я научился читать API.

Язык Java мне очень понравился. Я так и не полюбил эти виндосовские visual режимы. Я вообще не люблю Виндовс, хотя должен признать, что она с каждым годом становится все лучше. Пожалуй только с Виндовс 2000 система стала на что-то похожа. А так был примитив, особенно по сравнению с системой UNIX того времени. Я в UNIX работал в 1998 году (раньше тоже была возможность, но не умел). Первую программу на Java я писал довольно долго. Она была непростая, но все равно язык от фортрана отличался очень сильно, причем местами не в лучшую сторону. Но классы и zip-архивация классов меня восхитили.

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

В конце 2003 года во время двухнедельной поездки во Францию мой коллега Анатолий Снигирев показал мне новое приобретение -- карманный компьютер (КПК). Оказалось -- это хорошая машинка и многое может. И многие физические задачи можно решать. Он меня попросил перенести мою программу на КПК. Вернувшись в Москву и проведя маркетинг я остановился на русской машинке Rover PC P4. Я хотел самую легкую модель, но с большими параметрами и без излишеств. Эта модель как нельзя лучше подходила. Итак я ее купил и стал смотреть как на ней писать программы. Так получилось, что я очень скоро вышел на сайт http://www.ewesoft.com и обнаружил, что можно писать программы для КПК на Java и бесплатно. Увы, родная фирма Sun Microsystems виртуальные машины для карманников бесплатно тогда не давала.

А это значит, что мне это не подходит. Странная вещь - некоторые условно-платные программы не так уж и дорого стоят. Но я сторонник бесплатных программ. Не знаю почему. Вероятно потому что не умею покупать то, что нужно. А покупать то, что не нужно, не хочется. Этот вопрос до сих пор не утрясен. Вот свечки в церкви продают в 100 раз дороже их себестоимости, так там якобы они святые. А CD с песнями продавали в 100 раз дороже их себестоимости -- почему ? Скопировать программу стоит 0 копеек. Почему каждая новая копия стоит столько же, сколько и предыдущая.

Меня учили, что любой товар стоит столько, сколько за него дают. Ну так я и не хочу платить за копию как за оригинал. Я понимаю разработку программы на заказ в нескольких экземплярах. За это можно и заплатить, и договор можно составить. Но тиражирование программы, и принудительное навязывание операционной системы за немалые деньги -- это грабеж. Билл Гейтс -- не удачливый бизнесмен, а бандит, и за это я его не люблю. Меня возмущало, когда я видел в магазинах программу WinZip за немалые деньги. На Java работа с зип-архивами делается в три строчки кода и ничего не стоит. А есть другая программа Blender http://www.blender3d.org. Она позволяет делать мультики виртуальной реальности и сложна настолько, что трудно представить. И она бесплатная. Так что решайте сами.

Короче, я остановился на Ewe и быстро сделал программу. Но с Ewe на КПК программировать нельзя. Надо сделать программу на ПК и затем перенести на КПК. А как же поступать, если есть только КПК. И тут я снова вспомнил про свой Quick. Я достал старый код и, высунув язык, две недели переводил программу с фортрана на Java, часто уже не понимая даже что я делаю. Ведь у меня был очень сложный код расшифровки математических выражений, программного кода и многих наворотов. От каких-то сложностей я отказался, но в целом удалось почти все восстановить. И я снова сделал интерпретатор своего языка, который я переименовал в ACL (advanced command language) по аналогии с IDL. Получилось даже лучше, чем я ожидал.

Мой КПК стал универсальной машинкой для научного работника. Я выставил программу в каталог программ для КПК и она получила известность. Правда я сам редко пользовался КПК для расчетов, так как все время сижу перед большим экраном. Но иногда пользовался. А последнее время все чаще, так как появились новые возможности. А потом вдруг я ощутил, что не хочу писать программы на Java. Точнее, я хочу сделать только одну большую программу, которая будет уметь делать все, что мне надо, но писать я это буду только один раз. Ясно, что разговаривать с такой программой путем тыкания кнопок сложно и не интересно. Есть язык ACL и его надо развить так, чтобы он был способен делать все что мне нужно.

Это очень просто на Java, так как классы очень компактные и компилируется все достаточно быстро. Итак я начал писать интерпретатор под виртуальную машину Java 1.4.2. Что касается математики, то все было похоже. А вот интерфейс на Java Sun и на Java Ewe все же делается по разному. То есть кое-что пришлось переписать. ACL для ПК сейчас стал моим главным языком программирования. Он намного удобнее, чем Java хотя бы тем, что писать надо меньше. Команды короткие, а можно разрабатывать суперкоманды и почти любую работу запрограммировать в несколько строчек. Проблема в том, что команд много и опять надо читать свои собственные описания. Я их тоже сделал в виде вэб-страниц, и пока это не API, а просто статьи. Но читать и перечитывать все же проще, чем писать.

Первоначально я делал программу как интерпретатор и отладчик (среду разработки) в одном лице и у меня была идея создать одну бесконечную программу. При этом на конкретную реализацию внешнего вида программы большое влияние оказал IGOR PRO. Как раз такого типа программа и представлена на сайте http://kohnvict.ucoz.ru/vkacl/vkACLdr.htm. Но уже первый же опыт общения с пользователями моей программы привел к горькому осознанию, что люди не находят путей выхода на нужную программу, когда в одной программе много разных программ. Если в программе очень много опций и разделов появляется известная проблема -- как не заблудиться в большом городе.

Значит иногда нужен компромисс. Какой-то кусок отлаженных ACL-программ можно представить как самостоятельную программу, снабдить ее специальным меню и специальной версией интерпретатора без средств отладки. Кому-то больше ничего и не надо. Я уже сделал и такой вариант. В новом варианте размер программы всегда около 200 Кб, то есть размер голого интерпретатора, а сами ACL-программы очень компактные. Со временем на сайте появились такие ACL-программы, которые выглядят как простые Java-программы.

Чтобы сделать рекламу своим программам я выставил их в каталоги программ. Очень большой популярностью пользовался сам ACL интерпретатор -- программа vkACL.jar. Видимо мне удалось так правильно написать аннотацию, что людей это заинтересовало. В каталоге FreeSoft страницу с программой просмотрело (и возможно скачало) более 60 тысяч посетителей. В 2006 году я сделал для программы отдельный сайт http://vkacl.narod.ru. Этот сайт был указан в каталогах, и видимо поэтому за все годы до 2013 года его посетило более 250 тысяч человек.

Более того, для раскрутки сайта я написал книгу-учебник о программировании на Java. Книга тоже пользовалась успехом, она и сейчас доступна на сайте. Недавно я ее заново отформатировал по новым правилам. Идея мне так понравилась, что позднее я написал книгу-учебник о программировании на постскрипте. Три книги о программировании на ACL, Java, Postscript являются моими активными учебниками и могут служить пособиями для изучения этих языков с нуля всеми, кто пожелает их выучить.

Год за годом появлялись все новые версии программы. Я постоянно с ней работаю, и если что-то не хватает, то я дописываю интерпретатор таким образом, чтобы программа на ACL могла выполнить свою работу. В последней версии программы за 2012 год она разделена на две части. Первая часть более компактная и более универсальная может работать сразу в трех режимах: как отладчик и интерпретатор многих программ, как интерпретатор одной программы с внешним окном и собственным меню, и как интерпретатор одной программы совсем без окна. А вторая часть содержит большую библиотеку классов для работы с pdf файлами. Она имеет размер на 1 Мб больше, зато позволяет бесплатно преобразовывать и создавать с нуля pdf файлы. В частности, очень легко и просто выделить из большого pdf файла отдельные страницы и сделать из них отдельный pdf файл. Также очень просто сделать pdf файл из серии картинок (слайдов). Такие файлы можно показывать в процессе доклада.

Я всегда знал, что Java программы могут работать в интернете как Java applet. Но аплетам не разрешают работать с файлами на компьютере, а работа без файлов -- это просто игрушки. На заре развития Java технологии таких игрушек было много, на всех сайтах стояли дергающиеся буквы, живая рябь на воде, какие-то анимации -- иллюстрации физических процессов для школьников. Но полноценная работа была невозможна. Правда, существовал аппарат подписанных аплетов, когда с помощью достаточно сложной процедуры аплет можно было снабдить подписью, и таким аплетам разрешали все, как полноценным программам. Ведь аплеты все равно работают на компьютере после того, как они скачиваются, но процесс скачивания имеет неявную форму.

И вот это-то и пугало разработчиков интернета. В ту пору очень боялись вирусов и они реально досаждали очень часто. В конце 2009 года я вдруг обнаружил, что Java аплетам все таки разрешают читать файлы, если они записаны на сервер в ту же папку. Записывать все равно нельзя, но читать -- это тоже уже кое что. И я сделал вариант программы vkACL.jar, которая работала прямо в интернете как Java аплет. При этом входные данные в текстовом виде можно было копировать в окно редактора ACL программ, а результаты в виде текста получать таким же образом. А картинки копировать прямо с экрана специальными программами каких много. ACL программы тоже это умели.

Программа до сих пор стоит в интернете, и, в принципе, может работать. Ясно, что в режиме апплета она исполняет только мои готовые ACL программы, так как отлаживать программы в таком режиме не очень удобно. Позднее я придумал сделать голый ACL интерпретатор с внешним видом, который максимально удобен для запуска ACL программ и получения результатов. Такая программа уже была способна решать кое-какие задачи по науке, а также делать готовые постскрипт рисунки. Но в интернете началась война. Какие-то силы решили вытеснить java-аплеты из интернета. Поначалу пошли слухи, что через java аплеты можно распространять вирусы. Что они не безопасны.

После того, как слухи все усвоили, в новой версии виртуальной машины поставили блокировку копирования текста в окна редакторов java-аплета. Это произошло в конце 2011 года в версии виртуальной машины 1.6u24. Это был для меня удар ниже пояса. Я изучил интернет и нашел статью, в которой отмечалось как путем стирания одной строки в одном файле можно снять эту блокировку. Но ведь большинство пользователей даже виртуальную машину установить не могут, а не то, чтобы ее редактировать. Пришлось дать программу в виде архива для скачивания. На локальном компьютере копирование разрешено. В принципе, программу такого типа можно сделать и как обычную программу, не аплет, но я так и не собрался это сделать. Все таки ACL интерпретатор в виде программы vkACL.jar лучше, и я развиваю только ее.

Одной из важных частей программы в режиме среды разработки является наличие редактора текстов. Естественно, я написал много таких редакторов разного типа сложности. Но редактор -- это важная программа многоцелевого назначения. В середине 2010 года я задумал сделать вторую большую программу на Java, независимую от ACL. Эта программа называется vkNotepad.jar, и, как следует из ее названия, она является редактором простых неформатированных текстов, но с очень большим числом дополнительных возможностей. Я не даю ссылок, так как все ссылки есть на моем персональном сайте kohnvict.ucoz.ru.

Эта программа также развивалась постепенно. Вскоре после начала работы над ней я нашел в интернете готовые классы для работы со словарем, который проверяет написание текста на грамотность в процессе самого написания. Для этой программы требовалась виртуальная машина не ниже 5-й версии. А я до сих пор продолжал работать с компилятором 1.4.2. Тогда я сделал скачок и скачал последний компилятор на тот момент 1.6u4. С ним я и работаю последние три года. Мой редактор -- это очень продвинутая программа, которая может выполнять с текстом очень много разных функций, включая и такие, каких нет в других подобных программах. Она также может делать достаточно сложные вычисления, выполнять функции графического редактора и имеет независимый переключатель клавиатуры с русского на английский язык, а также преобразователь текста, нечаянно набитый с другой клавиатурой.

Эта функция помогает мне очень эффективно работать во Франции на казенном компьютере, на котором русским языком даже не пахнет. Так как компьютер чужой, то мне не нужно заниматься его настройкой. Я пишу и читаю русские тесты в своем редакторе независимо от операционной системы и ее локализации. Редактор -- вторая моя программа, которой я пользуюсь каждый день. Очень помогает проверка правописания, потому что современные клавиатуры на ноутбуках не очень стабильно работают, то печатают два символа вместо одного, то просто не пропечатывают буквы. Редактор все это сразу отмечает.

Сейчас, когда я дописываю статью, идет середина 2013 года. В первой половине этого года я купил себе два самых продвинутых ноутбука с новой ОС Виндовс-8, а также смартфон Самсунг галакси ноут 2, который имеет большой экран и представляет собой первый образец планшетофона. То есть это большой телефон и маленький планшет в одном флаконе. Я снова ездил во Францию, и снова меня Анатолий Снигирев попросил написать программы для смартфонов. Дело в том, что моя первая программа -- ACL интерпретатор для КПК была написана для ОС Виндовс Мобайл 2003. С тех пор мобильные операционные системы поменялись много раз, и в современных системах она не работает. Интересно, что программа на моем КПК все еще работает, уже более 9-ти лет, но он морально устарел.

И я решил попробовать писать научные программы на языке Javascript. За эти годы этот язык очень сильно подрос, в нем появилась графика не хуже, чем на Java, а процессоры современных смартфонов очень быстрые. И самое главное, что программы для браузера не зависят от операционной системы вообще. Они могут работать в интернете, на любом приборе типа компьютера, потому что браузеры есть везьде. Попытка оказалась удачной, писать научные программы на Javascript можно, нетрудно и они довольно быстро работают. Разумеется это пока просто готовые программы, я их получаю путем перекодировки ACL и Java в Javascript. Писать интерпретатор ACL на Javascript я пока не собираюсь.

А что в будущем? Сложный вопрос. Java уже не самый новый язык. Кое-кто называет его языком 90-х, хотя это не так. Java-2013 отличается от Java 90-х как слон от моськи. Быстро развиваются другие языки, которые используют ту же технологию, что и Java. Фирма Sun Microsystems продала Джаву фирме Oracle, но это ничего не изменило, все работает, новые версии виртуальной машины появляются. Как раз сегодня я снова обновил виртуальную машину на версию 1.7.25. Скоро появится стандарт HTML5 и новые возможности работы в интернете. Ясно одно: жизнь на месте не стоит. Всю жизнь я потратил на изучение компьютера, но это как гонка за быстро убегающим поездом. А я ведь помню детство, отрочество и юность, когда компьютеров не было совсем. Впрочем для большинства населения земного шара его и до сих пор нет. Такие темпы развития не способны проходить адиабатически. Кто-то отрывается вперед, а кто-то ничего этого не замечает. Еще в 2000 году я носил домой с работы по 50 дискет, чтобы переписать программу. А сейчас SD-карта размером в одну сотую дискеты имеет емкость 8 Гб, то есть 5500 дискет. А небольшой винчестер имеет емкость 2 терабайта, то есть 1456355 дискет. Конечно, для искусственного интеллекта и этого очень мало. У меня такое ощущение, что в будущем наше время будут слабо отличать от времени Римской Империи. Мы все еще в начале пути.


статья впервые написана в мае 1998 году на английском,
на русском с сентября 2000,
статья дополнительно дописывалась в июле 2006 года и в августе 2013 года.

 

  счетчик посещений   Виктор Кон на сервере Проза.ру   каталог слайд-шоу

  Внимание! Сайт оптимизирован под браузер Google Chrome.