О языке Postscript и моих программах

На фото показан вид из окна моего кабинета в московской квартире. Когда мы с женой искали себе новую квартиру, то для меня вид из окна был решающим фактором выбора. Не всегда бывает так красиво, но всегда приятно смотреть из окна. Напротив дома школа, за ней детский сад, а затем горизонтально идет улица "Теплый стан", за которой сразу начинается парк. Это на бывшей окраине Москвы, рядом с МКАД, но и метро рядом. Сейчас территория Москвы выросла и наш дом находится в географическом центре новой Москвы. Фотография есть в моем альбоме "Про меня и мое". В альбом можно попасть по ссылке на моем сайте, а ссылка на сайт есть на моей главной странице. 

А теперь о сути вопроса. Среди многочисленных языков программирования есть один, который называется postscript. Это очень старый язык, разработанный фирмой Adobe для программирования типографской продукции, но его возможности значительно шире и его даже можно использовать для расчетов, хоть это и не будет очень удобно. Это текстовый язык, который содержит команды, выполняемые специальной программой интерпретатором. То есть программу можно написать в обычном текстовом редакторе и интерпретатор ее выполнит. Главное назначение языка -- записывать программы документов для печати на сетевых принтерах. Он появился первоначально в операционной системе Юникс, которая как раз и была написана для компьютеров типа рабочих станций, обслуживающих много пользователей сразу. Текст был необходим, чтобы не зависеть от конкретной операционной системы.

Это было еще тогда, когда не было интернета. Потом та же фирма Adobe разработала новый формат pdf (Portable Document Format), в котором та же самая информация сжималась для уменьшения размеров файлов и более легкой их передачи по интернету. Про pdf файлы наверно знает каждый, они очень распространены. В этом формате можно писать книги, научные статьи, каталоги художников и многое другое. Формат pdf тоже опирается на некий язык программирования, но работать с ним очень сложно. Проще создать постскрипт файл и потом конвертировать его в pdf. В России постскрипт принтеры не развились, и язык постскрипт мало кто знает. А в издательствах постскрипт постепенно заменили на другой, более простой язык PCL, а также есть много редакторских систем, которые сразу спасают продукцию в pdf. По этой причине постскрипт стал реже использоваться и уже давно поговаривают, что язык умер.   

Это и так и не так. Язык, как таковой, существует, есть программы, которые с ним работают, и любой желающий может его выучить и прямо на нем программировать графику. И это часто намного эффективнее специализированных издательских систем. Я сам узнал про этот язык в начале 90-х, но начал изучать его только с 1996 года, когда получил первое описание, еще не полное. Полное описание я получил в 1998 году. Разумеется все за границей и на английском языке. Я сам постоянно пользуюсь этим языком, потому что почти все редакции международных научных журналов любят принимать рисунки в научных статьях именно в этом языке, точнее в формате eps. В этом рассказе я представлю свои разработки для облегчения использования языка постскрипт.      

Первоначально я плохо знал тонкости языка и не любил писать на нем сложные программы. Я выучил набор графических примитивов, и из них можно было сделать любой рисунок. Но при этом надо было много писать текста. Чтобы облегчить эту работу я решил сделать свою собственную программу, которая по небольшому набору входных данных будет автоматически создавать ps файл, то есть файл на языке постскрипт для готового документа. Набор входных данных представлял собой небольшую систему команд, которую условно можно было назвать новым языком более высокого уровня. Каждая группа команд сразу описывала готовый объект, а не примитивы. В то время (конец 90-х годов) я программировал на фортране. И я сделал такую программу на фортране. Последняя ее версия 3.0 была закончена в 2000 году. Программу я назвал vkPS.

С тех пор прошло более 15 лет. Я уже давно не пользуюсь этой программой и не программирую на фортране, но вдруг мне захотелось проверить как это все работает. Последняя версия фортрана, который у меня был -- это Fortran Power Station 4.0  от Майкрософт. Я уже не помню как я его устанавливал, но установленная на компьютере программа является переносимой. Стоит скопировать ее папку на другой компьютер и она работает. Так что если кому-то нужно, могу дать скопировать. Папку с фортраном я нашел на внешнем винчестере с архивом всех старых программ. Этот фортран был разработан для операционной системы Виндовс-95, это была первая система для 32-битного процессора. Раньше были системы для 16-битного процессора. Сейчас программы, написанные для 16-битного процессора, система Виндовс-8.1 не запускает совсем. 

Но программы для 32-битного процессора новая система еще запускает, хотя сама она уже 64-битная. И этот фортран, несмотря на свой почтенный возраст, работает. В папке были примеры готовых программ по графике, с ними не все получилось как надо. Но проблем с тем, чтобы использовать фортран для компиляции кода не было. Далее я нашел код своей программы vkPS. Весь код был записан одним файлом и имел 3300 строк. То есть это очень большая программа, хотя и выполняет она всего одну работу. Компиляция кода прошла успешно. Оказывается фортран работает в Виндовс-8.1, как и раньше работал. Я с 2003 года перешел на использование языка Java при программировании. Но некоторые особенно сложные математические расчеты иногда удобнее делать на фортране. Я помню, что проводил сравнение эффективности простых вычислительных программ на фортране и на джаве. Фортран работал быстрее, но не намного.

В 2000-м году я написал документ с описанием работы программы vkPS в виде ps файла, созданного самой программой vkPS. Это очень сложный документ в две колонки с рисунками, формулами и так далее. Для показа его в интернете я конвертировал ps файл в pdf. Но получилось не очень красиво. Дело в том, что я ps файл сформатировал на формат бумаги А4, а программа Миктех по умолчанию конвертирует ps в pdf на американский формат бумаги, который чуть меньше по высоте и чуть шире. Пришлось чуть подредактировать исходный vks файл и запустить в работу программу vkPS. Это тоже был тест. К сожалению все получилось, но не сразу. Оказывается я в 2005 году все таки немного поменял программу и забыл об этом. Поэтому старый vks файл компилировался с ошибкой. Теперь описание программы vkPS в виде pdf файла можно посмотреть вот тут [1]. Ссылка на pdf файл появилась на моем сайте [2] в разделе "Программы" рядом со ссылкой на скачивание самой программы.

Программа vkPS просто читает один текст и создает новый текст. Позднее я стал программировать на джаве оконные программы, имеющие интерфейс для взаимодействия с пользователем. В 2008 году я решил написать новую программу создания ps документа, которая бы содержала систему окон ввода необходимой информации с подсказками на каждом этапе. Она описывала практически те же самые объекты, что и vkPS, просто теперь не надо было изучать никакого, даже самого примитивного языка входного потока информации. Программу я назвал vkPSGen. Ссылка на ее скачивание есть на моем персональном сайте. После того, как такая программа была создана, я открыл в интернете новый сайт, посвященный языку программирования Постскрипт [3]. Одновременно я написал книгу, в которой изложил основы программирования на постскрипте с нуля, но в более простом виде, чем в технических описаниях. Ссылка на книгу есть как на указанном сайте, так и на моем персональном сайте в разделе "Информация".

Дело в том, что с некоторых пор я научился писать и очень сложные процедуры прямо на постскрипте. Если использовать эти процедуры, то можно относительно легко писать ps документы непосредственно, то есть вообще без вспомогательных программ. А сама программа vkPSGen была написана на языке программирования ACL (это мой собственный язык) и сейчас интегрирована в более общую программу vkUtility. Наиболее часто приходится все же создавать одностраничные картинки в виде eps файлов с разным размером. Такие картинки очень легко конвертируются в pdf без изменений. А вот многостраничные ps файлы формата бумаги А4 пока конвертировать без изменения формата бумаги у меня через Миктех не получается. Надо искать варианты решения проблемы. Но это редко бывает нужно.

Все таки многостраничный pdf файл наиболее удобно создавать с помощью программы Миктеха и редактора Scientific Work Place. Моя программа vkUtility позволяет эффективно использовать эти инструменты даже для документов на русском языке. Программа vkPS как издательская система все же уступает указанным инструментам. Но она может быть полезной для программистов, потому что свою работу она делает автоматически. Любая программа может сгенерировать входной vkp файл и потом запустить программу vkPS. Но мои программы на языке ACL имеют много средств для быстрой графики растрового типа и сейчас такой режим я не использую. А раньше, когда у меня не было ACL, я так работал в систем Юникс. Писал программы расчетов на фортране, затем входной vkp файл, запускал программу vkPS и показывал ps файл.

Ссылки

[1] [2] http://kohnvict.ucoz.ru/main.htm
[3] http://postscript-vk.narod.ru/


Рецензии