Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование для начинающих Выпуск 12 Часть2


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Программирование для начинающих

Выпуск 12 ME
ЧАСТЬ 2
23 JAN 2001

 
 
 
Ведущий рассылки: Вячеслав Мацнев
e-mail: stac@stacmv.net
Если вам приходилось много работать в редакторах (графических или текстовых), то вы наверняка сталкивались с «печатью в файл». Допустим, у вас дома нет принтера (или он вышел из строя). Тогда вы создаете документ, который предполагается напечатать, а затем в настройках редактора (или даже операционной системы) задаете файл как устройство вывода. На диске создается файл (обычно с расширением PRN), содержащий всю необходимую информацию (назовем его PRINTED.PRN). Теперь вам не нужно даже, чтобы на компьютере, с которого будет происходить печать, был установлен редактор, в котором вы работали. Единственное, что необходимо правильно задать при печати - модель принтера, поскольку файл включает в себя настройки драйвера. Затем из командной строки DOS дается команда

copy/b/v PRINTED.PRN prn

Обычный текстовый файл можно распечатать точно так же. Просто команды драйвера, встроенные в наш PRINTED.PRN, сами указывают принтеру, как этот файл печатать.


Теперь, обладая некоторыми знаниями об устройствах, попробуем научиться управлять передачей информации с одного устройства на другое.
Прежде всего введем понятие фильтра (filter). Фильтр - это программа, «пропускающая через себя» информацию. Подавляющее большинство фильтров допускают и ввод и вывод. Применение фильтров оправдано, если первое отличается от второго - по принципам, заданным пользователем.
Трудно сказать, является ли фильтром выбранная наугад программа. Ответ на этот вопрос можно получить одним из следующих способов (по убыванию эффективности):
  1. Прочесть документацию;
  2. Попробовать;
  3. Предположить по здравому смыслу.
Как правило, именно здравый смысл говорит авторам программы сделать ее фильтром, если необходимость в этом может возникнуть. Например, большинство команд DOS являются фильтрами, а большинство исполняемых файлов пакетов прикладных программ - нет. Вообще, чем сложнее программа, тем меньше вероятность, что она снабжена свойством фильтра.
Некоторые фильтры не допускают ввода, например, команды DIR и TYPE, но зато они допускают вывод, и, следовательно, все-таки являются фильтрами. Команды DATE и TIME представляют собой полноценные фильтры, допуская и ввод, и вывод.
Для указания направления передачи информации с одного устройства на другое используются символы «больше» > и «меньше» <. Напомним, что пытаться использовать эти символы в именах файлов не стоит - последствия такого шага непредсказуемы.
Одними из самых распространенных форматов перенаправления (команды, использующей символы < и >), являются такие:

Фильтр < Устройство_Ввода

При этом фильтр должен допускать ввод. Другой формат:

Фильтр > Устройство_Вывода

Здесь фильтр может и не допускать ввода.
Если в качестве устройства вывода используется файл, то при выполнении последней команды он будет создан. Если же файл с таким именем существовал, он будет уничтожен безо всяких предупреждений. Если старую информацию предполагается сохранить, а новую дописать в конец файла, символ > надо указывать дважды. Например:

dir >> c:ALLFILES.LST

Если файл ALLFILES.LST существует, он будет дописан, если нет - создан.
Теперь рассмотрим внешнюю команду SORT. Как видно из названия, эта команда занимается сортировкой, то есть вводит одну информацию, сортирует ее, и выводит другую, «отфильтрованную» информацию. Рассмотрим пример.
Будучи в командировке в США, вы познакомились с интересными людьми. Сведения о них в целях экономии места занесены в текстовый файл (простейшую базу данных), который вы назвали FRIENDS.TXT:

CollinsMelany13Jun1969
JacksonFrank04Feb1970
WallacePatricia29Mar1968
MurphyAnthony14Dec1974
SpringfieldSindy16Mar1970
ParkerHenry04Sep1967
AshleyJack12Aug1971

Разумеется, для примера мы взяли всего семерых: фамилия, имя, число, месяц и год рождения.
Прежде всего отсортируем список в прямом алфавитном порядке (от A до Z):

sort < friends.txt

Получилось? Тогда почему бы не заменить наш файл на упорядоченный:

sort < friends.txt > friends.txt

Команды DOS по умолчанию выполняются слева направо. Так что вначале файл сортируется ( sort < friends.txt ), а уже затем записывается на старое место.
Теперь отсортируем ваших друзей по году рождения, определив, что год записывается с колонки 29:

sort < friends.txt /+29

Для поиска определенного сочетания символов (подстроки) в файле используется внешняя команда FIND:

find "196" < friends.txt

Будет выдан список лиц, родившихся до 1970 года. Чтобы узнать, кто из ваших друзей родился в марте, напишем так:

find "Mar" < friends.txt

А ключ /v «обратит» поиск, найдя тех, кто родился в другие месяцы:

find /v "Mar" < friends.txt

В своей записной книжке вы нашли загадочную заметку « 4-го числа поздравить J ». То есть человек должен удовлетворять двум критериям: его имя (или фамилия) начинаются с буквы J, а в дате рождения встречается число 04. Для этого используется еще один символ |, в англоязычной литературе именуемый трубой (pipe), а в русскоязычной - конвейером (вспомним автомобильный завод). Смысл понятен - сквозь него «пропускается» результат одного перенаправления и, возможно, поступает на другое.

find "J" < friends.txt | find "04" < friends.txt

Выполнив эту команду, вы воскликнете: «А, старина Фрэнк Джексон, конечно же!». На этом наш интерес к американским друзьям иссяк, и мы обращаемся к командам DOS.
Команда DIR выводит список файлов в текущей директории, вообще говоря, в произвольном порядке (точнее, в порядке записи на диск). Чтобы заставить список выводиться в алфавитном порядке, используем как конвейер, так и команду SORT:

dir | sort

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

more < BIGFILE.TXT

или

type BIGFILE.TXT | more

Внизу экрана возникает сообщение --More-- . При нажатии любой клавиши поэкранный вывод продолжится.
Необходимость в символах перенаправления возникает весьма часто, особенно при работе из-под Windows.
При выполнении команды DATE она выдает текущую дату и предлагает пользователю ввести новую. Обычно нужды в таком вводе не возникает, а нажатие на Enter утомляет. Создадим файл CR.KEY, нажмем Enter, сохраним и выйдем. Получился файл, содержащий символ «возврат каретки» (EOL) и имеющий объем 2 байта (EOL и EOF). Теперь достаточно выполнить команду

date < CR.KEY

Дата будет просто выдана на экран, не ожидая никакого нажатия - она получит его из файла CR.KEY. Тот же файл можно использовать для команды TIME и для других подобных команд и программ.
Некоторые программы, например, архиваторы, обычно работают в соответствии с ключами командной строки, поэтому при простом запуске выдают справку о себе. Полезно создать файл с такой справкой, чтобы иметь возможность прочесть его в любой момент. Другие программы обычно выдают подсказку при указании одного из следующих ключей:

/? /h /help -? -h -help

Допустим, опытным путем искомый ключ для некоей программы PROGRAM.EXE найден, тогда файл справки создается командой

PROGRAM.EXE /? > PROGRAM.INF

Как, не имея документации, получить полный список ключей архиватора ARJ? Запустим его без параметров и прочтем то, что нас заинтересует: « Type ARJ -? for more help ». Однако при выполнении этой команды экраны вылезают один за другим, требуя нажатия клавиши Enter, и так 15 раз. Утомляет? Более чем. Но теперь мы уже знаем, что делать. Создаем файл 15CRS.KEY, содержащий 15 символов возврата каретки.

arj.exe -? < 15CRS.KEY > arj.inf

или

type 15CRS.KEY | arj -? > arj.inf

Последний пример. При выдаче команды DEL с маской запрашивается подтверждение: надо нажать Y и затем Enter. Создадим файл YES&CR.KEY с этими двумя символами, и теперь все просто:

del *.* < YES&CR.KEY

Ту же проблему можно решить и так:

echo y | del *.*

О команде echo мы поговорим подробнее, изучая ВАТ-файлы. Там же мы подробнее узнаем о таинственном нулевом устройстве (NUL). Пока же приведем только один пример: проверка «читаемости» дискеты:

copy a:*.* nul

Что происходит? Мы даем DOS задание скопировать файлы на несуществующее, нулевое устройство. То есть копирование физически не производится, но зато выводится список файлов, которые будут скопированы, если устройство-назначение будет реально существовать. Кстати, если перенаправить вывод не на экран (по умолчанию) а в файл

copy a:*.* nul > floppy.lst

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

Ответ:

dir | sort /r | find "<DIR>" /v

А сколькими еще способами вам удастся ее решить?

---------------------------------------------------

Это будет вашим сегодняшним заданием по ДОС. Кто-нибудь возражает?

ЛЮДИ

Уважаемые подписчики, сегодня у нас гость. Знакомьтесь, Александр Кузнецов, программист, автор популярной программы "Macro HTML".

Вячеслав Мацнев: Здравствуйте, Александр!
Александр Кузнецов: Добрый день, Вячеслав!


ВМ: Поздравляю Вас с Новым годом, с Новым веком и Новым тысячелетием! Желаю Вам счастья, здоровья и, конечно же, осуществления Ваших планов!
АК: И Вас с Новым годом, творческих успехов и денег побольше :)


ВМ: Традиционный вопрос в подобных интервью. Александр, как и где Вы впервые столкнулись с компьютерами?
АК: В общем, впервые я столкнулся с компьютером без присутствия оного :)

Был год эдак 87-й. Я жил (и сейчас живу) в глубокой провинции. Город с населением ~50 000. Мне тогда было 13 лет. Компьютеры никогда ни видел, даже не знал, что такое, например, дисплей :)

Приходит ко мне друг и говорит - ты, мол, в электронике сечешь, помоги разобраться - тут вот в журнале "Радио" схема прибора на микросхеме КР580ИК80А (то ли генератор морзянки, то ли декодер). Дальше показывает - а вот для него программа, но в ней что-то про арифметику и оценки, и зачем это для прибора?

Начинаю разбираться. Выясняется: что программа эта не для прибора, а для компьютера, просто обе эти вещи на одной микросхеме сделаны. Микропроцессором она называется :) А статья с программой про оценки из цикла "Программирование на бейсике", уже N-я по счету. Начинаю ее читать, пытаюсь разобраться.

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

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

Все это настолько меня поразило, что в таком (пораженном) состоянии я и нахожусь по сей день :-)


ВМ: И чем это для Вас закончилось?
АК: Да ничем особенным, специалистом стал по железякам этим самым... :-) (точнее, по их программированию :)


ВМ: А как на Ваш взгляд должно происходить знакомство человека с компьютером, чтобы у него не было проблем, т.н. психологического барьера и пр.?
АК: Приручать человека к компьютеру надо постепенно, как приручали лиса в "Маленьком принце" А. Экзюпери :-))

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


ВМ: А легко ли человеку стать программистом? И вообще, как по Вашему, какими качествами необходимо обладать, чтобы быть программистом (я подразумеваю под программированием не столько профессию, сколько просто вид деятельности)? Верно ли утверждение, что любой может быть программистом (научиться программировать)?
АК: Самое необходимое для того, что бы научится программировать- это желание.

Думаю, научится программировать может практически каждый, а вот стать хорошим профессиональным программистом... Наверно, как говорится, не каждому это дано...


ВМ: А Вам, Александр, дано :-)? Как Вы стали программистом, Александр? Где Вы учились?
АК: Когда я немного понял из статьи в журнале "Радио" что такое компьютер, (узнал про клавиши и дисплей :-) меня настолько поразили его возможности, что я тут же стал пытаться составить свою программу. Статья была N-я из цикла, там не было описания операторов, но описывалась сама программа (проверка арифметики у детей). Например, описывалось: в строке такой-то выводится такая-то надпись. Смотрю - несколько "пустых" операторов PRINT и один с этой надписью в кавычках. Я, конечно, не понимаю, зачем несколько PRINT, но думаю - если это дело скопировать и изменить надпись, то, наверно, все это хозяйство будет выводить другую надпись. В общем, изрядно потрудившись, я набросал на листочке то, что по моему мнению, должно было решать квадратное уравнение или сообщать, что оно не решается. Посмотрел на этот листочек, повздыхал, что живого компьютера поблизости нет и в ближайшее время не будет, и засунул подальше. Учился я тогда в 7 классе.

Прошло некоторое время. По телевизору стали появляться сообщения, что в некоторые школы в Москве установили компьютеры, чтобы обучать новое поколение такой мудреной науке - информатике. Ну думаю, если в Москве в школах стали компьютеры появляться, то скоро будут и в нашей глуши - лет, эдак, через 10 :)

В одно прекрасное весеннее утро выхожу я на переменке на крылечко родной школы №9 и вижу подъехавший грузовик с коробками. На коробках написано - персональный компьютер "Агат". Ну, думаю, такого счастья привалить не может, наверно, в коробки из под компьютеров положили что-то другое. Гуталин, например... :-))) На всякий случай интересуюсь - да нет же, говорят, компьютеры!!! Но сразу охладили мой пыл - установят их только к сентябрю следующего года, а тебе вообще с ними рано общаться, информатика только с 9-го класса. Так я и не понял, каким чудом в наш городишко они попали в то время. Тем более я потом узнал, что и не для нашей школы они предназначались, но там директор их испугался и отказался, а наш был прогрессивный и взял.

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

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

И пока учился, и потом, проделал огромное количество работы самостоятельно дома чисто для себя.

Самые различные эксперименты.

Написал систему программирования на языке Форт.

Свою простую операционную систему для "игрушечного" компьютера, которая работала с магнитофоном как с дисковым накопителем.

К своей же системе редактор, транслятор с ассемблера и компоновщик.

Разработал BIOS для ОС CP/M и установил эту систему на "Вектор-06Ц", хотя в журналах писалось, что это не возможно. Для этого пришлось просто спаять "хитрый" диспетчер адресов. Для компьютера "Корвет" написал драйвер для магнитофона, который позволил мне перетащить его программное обеспечение на свой "Вектор". Вот было то радости когда все это заработало!

Даже был вирус написан с хитрым полиморфным кодированием. Сразу оговорюсь, что гулял он только по моему компьютеру. Просто не вижу смысла, чтобы гадить ближнему. А вот в процессе написания можно узнать много чего полезного. Что бы он куда ни будь не ускользнул, я потом его заархивировал с паролем. Этот архив у меня есть до сих пор, но вот пароль не помню :-)

Занимался сжатием, сделал действующую модель архиватора по алгоритмам Лемпеля-Зива и Хаффмана. "Модель" потому что не оптимизирован и работает очень медленно.

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

Занимался так же низкоуровневым программированием баз данных на сбалансированных сильноветвящихся B-деревьях.

В общем много чего было сделано, но ничего не доведено до конца :) Просто не было стимула. Когда же появился у меня интернет, решил хоть что-то довести "до ума". Так и получился Macro HTML :-)


ВМ: Многие подписчики уже познакомились с Вашей программой Macro HTML (ну а с образцами результатов ее работы знакомы абсолютно все).

Справка:
HTML версия выпусков рассылки делается в MacroHTML. А начиная с выпуска 6.1, в MacroHTML делается и текстовая версия выпуска. Теперь обе версии генерируются MHTML скриптами.

Расскажите, как получилось, что Вы решили ее написать?


АК: Когда у меня появился доступ к интернету, почти сразу же возникла идея попробовать создать свою страничку. Поначалу создавал ее Windows-блокнотом и встроенным в FAR редактором. Страничка представляла собой список поисковиков. Когда она выросла до определенных размеров, мне стало лень делать одни и те же повторяющиеся действия. Я перебрал изрядное количество редакторов, но ни в одном не нашел никаких средств автоматизации. Так и родилась идея восполнить этот пробел. Так что основная движущая сила создания Macro HTML - человеческая лень. Собственно, практически все изобретения человека, начиная автомобилем и заканчивая компьютером, созданы исключительно из-за лени :)

Кстати, поддержку той странички я прекратил (не знаю, временно или на совсем) из-за ограниченности интернет-ресурса. Но она до сих пор живет, человек по 20-30 в день заходят:

http://najti.chat.ru

Будьте снисходительны, это моя первая проба интернет-пера :)


ВМ:Как прошло Ваше знакомство с HTML? Я, вот, считаю, что HTML должен знать любой программист, даже самый начинающий. Что Вы на это скажете?
АК: Как прошло знакомство с HTML? Нажал F3 в FAR и познакомился:) Потом нашел описание основных тегов - и вперед. А затем скачал и спецификацию HTML 4.0. Насчет знать каждый - не знаю, но что весьма полезно - однозначно.


ВМ: Что окончательно убедило Вас в необходимости написания собственного HTML редактора? Ведь на рынке (если это слово здесь применимо) программного обеспечения HTML редакторы представлены, мягко говоря, в изобилии.
АК: Как я уже говорил, я не нашел для себя ничего подходящего. А рынок большой, всем места хватит...


ВМ: Очень интересно. Скажите, Александр, а почему именно невизуальный редактор?
АК: Как не крути, а визуальный редактор создает очень тяжелый код, много лишних элементов. Размер здесь имеет очень большое значение. К тому же возможности визуальных редакторов ограничены самим редактором, а если писать "руками" - можно использовать все возможности HTML на полную катушку. Изучив возможности одного визуального редактора, вы привязаны к нему, зависите от фирмы-производителя. А если пишете код сами, то зависите только от w3с.org :)


ВМ: Ничего, что я спрашиваю в основном про MHTML? Дело в том, что это тесно связано как с тематикой нашей рассылки, так и с самой рассылкой.
АК: Только за!


ВМ: Ок. Идея созрела. Думаю подписчикам будет интересно узнать, как начинается разработка программных продуктов. Расскажите, пожалуйста, об истории создания (постановки задачи, проектирования,...) программы.
АК: Вот насчет постановки задачи, проектирования, спросите лучше у менеджера солидной софт-компании.

Дело в том что я писал в начале для себя, т.е. заказчик и программист жили в одной голове и общались по своим внутренним протоколам :)

И это, в общем, правильно. Я полностью согласен с мыслью А.Каталова, прозвучавшей в его прекрасной статье "Искуство Shareware", что программист-одиночка может написать хорошую программу, но она должна быть "выстрадана", т.е. в первую очередь полезна самому создателю, а лучше - и не только ему одному. Кстати, вы можете найти эту статью в архиве на сайте журнала "Компьютерра", очень рекомендую.


ВМ: Почему Вы решили использовать именно этот язык программирования? Какие факторы Вы учитывали?
АК: Собственно говоря, для написания такого рода "околосистемных" приложений выбор не большой. А конкретнее, только две альтернативы: C и Pascal. Assembler отпадает в виду слишком большой трудоемкости. Хотя совсем без него, конечно, не обходится - в Macro HTML он использовался при написании своей строковой библиотеки и проверки ключа, который основывается на алгоритме RSA.

Поэтому был выбран С, на котором я специализируюсь. И вообще, если сравнить текущее состояние развития C и Pascal, то практически по всем характеристикам они не уступают друг другу, однако пришли к этому разными путями. Язык C исходно был предназначен для системных разработок, Pascal же вытащила к этому фирма Borland практически в "одиночку" из "студенческого" языка, предназначенного, в основном для обучения. Поэтому, да простят меня поклонники этого языка, некоторые новые вещи в нем выглядят несколько чужеродно.


ВМ: Что вообще необходимо учитывать при выборе языка программирования для написания программы? А для изучения? А в качестве первого языка?
АК: При выборе языка для разработки необходимо учитывать множество самых разных факторов:

- сроки по времени
- требование к объему в памяти, на диске, к быстродействию
- стоимость (требования к квалификации разработчиков)
- совместимость форматов
В общем, все и не перечислишь, это, наверно, тема для отдельного разговора.

Вполне очевидно, что если задача заключается, например, в заполнении и некоторых манипуляций с таблицей формата DBF, и использовать ее (программу) будут небольшое количество пользователей, то необходимо выбрать для написания такой программы какую-нибудь реляционную СУБД: FoxPro, Paradox, Access наконец.

А вот если эту же задачу будут использовать тысячи пользователей, то история получается другая. Необходим инсталлятор, объем желательно поменьше, что бы по проводам передавать быстрее (или на дискету помещалась), не требовала бы "сторонних" програмных продуктов, например, установленного FoxPro. Да и "вылизать" ее надо получше - горячие клавиши, максимум результата при минимуме нажатий, интуитивный интерфейс и т.д. В этом случае, на мой взгляд, необходимо выбрать "классический" профессиональный язык программирования типа C или Pascal и библиотеку для поддержки этого формата.

Что касается изучения...

Затрудняюсь сказать, я изучал программирование весьма нетрадиционно.

Начинал программировать я на компьютерах типа Радио-86рк, которые имели тактовую частота ~2 МГц и объем памяти 16 килобайт (0.016 мегобайт :-) Более-менее серьезные программы на них можно было писать только на ассемблере, поэтому практически ассемблер - мой первый язык. Си мне понравился сразу тем, что позволяет делать почти все что можно на ассемблере, только эффективность кода меньше, много лишних инструкций, но это с лихвой компенсируется более быстрым программированием и "понятностью" программы. Метод изучения был такой: я знал что мне надо на ассемблере и "заставлял" компилятор формировать примерно то же. Эта "обратная" методика много мне дала, когда я пишу Си-код, абсолютно точно знаю что делаю и в какие примерно команды это будет скомпилированною.


ВМ: Как Вы относитесь к Бейсику? Так ли уж необходимо его изучать в современных условиях? (Это я про нашу рассылку).
АК: Бейсик я не люблю. На нем я написал только незначительное количество своих первых программ. Возможно, это не плохой выбор для того что бы понять что такое программирование вообще. Но, уверен, Бейсик не для серьезного программирования. Наверно это от того, что я очень хорошо знаю C, Assembler, принципы работы системы. На Бейсике у меня словно связаны руки. Но не профессиональному программисту, думаю будет очень полезно знать этот язык, особенно если учесть мощную поддержку этого языка фирмой Microsoft, которая встраивает его во все свои приложения.


ВМ: Что ж, вернемся к MHTML. Александр, поддержка проектов, встроенный язык программирования, довольно круто, а? Как Вы дошли до этого? Ну с проектами все, вроде бы, понятно. А, вот, язык программирования? Так ли уж необходимо было это делать (нет, я только за! по-моему, именно MHTML-script сильно выдвигает вперед MHTML по сравнению с другими)?
АК: Как я уже сказал, именно отсутствие на рынке редактора с возможностью программирования побудило меня взяться за это дело. Однако, как выяснилось, это мало кому интересно, - наверно, всего нескольким процентам пользователей. Поэтому получается такая картина: большинству пользователей понравился сам редактор и всякие "макро" не нужны. Однако есть небольшой процент редких пользователей, которым нужны именно "макро" возможности, и для них Macro HTML просто уникальная вещь.

Однако против законов рынка не пойдешь, и для того что бы не растерять своих пользователей я вынужден преимущественно развивать другие возможности, хотя работы в области улучшения макро-возможностей работы еще непочатый край.


ВМ: Я знаю, есть возможность встраивать в свои программы VBA или VBScript от Microsoft, но Вы пошли другим путем. Так почему все-таки М?
АК: Работа со строками на Бейсике, скажем прямо, отвратительная. А в этом случае как раз это и требуется. Я знаю, вы активно используете М-скрипты при подготовке текстов рассылки, и, наверно, понимаете о чем я говорю: в некоторых случаях то, что на М записывается одной строчкой, на Бейсике потребовало бы строк десять. Была еще альтернатива встроить Perl, у которого с обработкой строк все в порядке, а так называемые регулярные выражения по мощности оставляют позади даже М, но в данном случае были другие проблемы. Например, либо тратить гораздо больше времени на реализацию, либо использовать чужой код... И объем больше...


ВМ: Очень любопытно. Не могли бы Вы рассказать немного про М-технологию, кажется, большинство подписчиков слышит об этом впервые?
АК: М-технология относится к классу СУБД, к этому же классу относится, например FoxPro или базы на основе SQL. Т.е. системы, заточенные под базы данных. Однако есть очень важное различие: FoxPro, SQL - это все так называемые реляционные базы (по простому - табличные). В M применяются гораздо более гибкие базы данных. С применением М технологии разрабатываются очень серьезные системы. Не даром ведь по этому принципу НАТО построило распределенную базу из тысяч рабочих мест, многие из которых находятся на военных кораблях. Если вы всерьез занимаетесь базами данных, я бы рекомендовал по крайней мере обратить внимание на эту технологию. Довольно краткое описание М-технологии можете посмотреть на странице Macro HTML.

То, что есть в Macro HTML, это не М-технология, оттуда просто позаимствован синтаксис языка.


ВМ: Не планируете ли Вы и в дальнейшем использовать подобные MHTML-Script технологии в других программах, а может они уже используются?
АК: Да, я планирую использовать их везде, где это будет целесообразно; во многих случая применение встроенного языка программирования дает поразительную гибкость казалось бы привычным вещам. Увы, кроме Macro HTML законченных разработок у меня пока нет; идей хоть отбавляй, но времени увы...


ВМ: Каковы, вообще, Ваши планы на будущее? Это тоже довольно распространенный у интервьюеров вопрос. Но все же новый век ...
АК: Что касается MHTML - развивать дальше. 1.5 практически готова, в следующей версии я займусь, скорее всего, инспектором тегов.

А что касается профессиональных...

Дело в том, что я живу в маленьком городе (это не очень плохо), и делать мне здесь совершенно нечего (это совсем плохо)...

Зарплата моя составляет $70. Не смейтесь, это очень неплохо, если учесть, что средняя по городу не дотягивает до $30... Красный пояс, понимаешь...

Сейчас окончательно созрела идея найти более полезное применение своим силам, сменить работу, перебраться поближе к цивилизации. Поэтому я не премину воспользоваться предоставленной возможности и обращусь к читателям - если у вас есть вакансия программиста или другие соображения по этому вопросу - пишите мне alk@penza.net


ВМ: А что касается MHTML 1.5, когда мы его увидим? Чем Вы на сей раз порадуете пользователей?
АК: Как говорится - в самое ближайшее время.

Новая версия будет содержать встроенный сервер с поддержкой CGI и SSI для скрипт-разработки на Perl и PHP. Я часто слышал мнение, что для создания своего сайта со скриптами необходимо большую часть времени разработки висеть в интернете, что почти не реально для "диалапщиков". Версия 1.5 предназначена, чтобы разбить этот стереотип, в ней можно разработать "полновесный" интернет-сайт с нуля и до конца без единого подключения.


ВМ: Сервер с поддержкой CGI? Удивительно. И как это будет работать?
АК: Там будет новый режим, при котором при нажатии на кнопку просмотра файл копируется в приемную директорию, а затем открывается по HTTP протоколу через встроенный сервер. Возможно так же использование "внешнего" сервера, установленного на этом же компьютере или в локальной сети. Работает почти все - Perl, PHP, SSI, можно тестировать формы и другие вещи, все происходит так же, как и на настоящем сервере.


ВМ: Александр, в Вашей гостевой книге пользователи могут делиться (и делятся) своими соображениями по поводу MHTML. Есть ли еще какие-либо возможности для взаимодействия все растущего числа пользователей программы с вами и друг с другом?
АК: Сразу после выхода 1.5 я планирую запустить конференцию на сайте, посвященную MHTML и веб-дизайну вообще.


ВМ: А как Вы, вообще, относитесь к общению посредством документальных сетей электросвязи?
АК: Но ведь только по "мылу" можно передать цветную фотографию за несколько минут! :)

А вообще - все эти прекрасные изобретения - телефон, e-mail, обычная почта, ICQ - подобные, факс и др. четко находятся в "своих" нишах и практически не составляют конкуренции друг другу. Разве что e-mail немного теснит обычную почту в классе "чисто информационных" сообщений (я имею в виду без материальных предметов).

Однако, иногда обычной почтой быстрее получается - например 6,5 ГБ информации из Ленинграда в Москву дойдут за неделю. 10 CD :-) А по e-mail дольше... :-))


ВМ: Так называемая Интернет-зависимость Вас не пугает?
АК: Я думаю, эта проблема не стоит той шумихи, которую вокруг нее раздувают. Если человек психически здоров, то никакой интернет ему не страшен, а если нет - то это проявится и без интернета. Только зависимость будет другой. Алкогольной, например. Или из окна вниз вслед за кумиром.


ВМ: А что пугает? (простите за назойливость)
АК: Да странный вообще вопрос, даже не знаю... Люди некоторые наверно, а не компьютеры, особенно если они (люди) не на своих местах...


ВМ: В конце концов, Интернет дает мне возможность вести эту рассылку. А что он дает Вам? В печати иногда проскакивают статьи о "не полезности" Интернета, чуть ли не о его вреде (об отрицательном влиянии на производительность труда, например).
АК: Ну да. А еще на производительность труда плохо влияют кроссворды, шахматы, карты, книги. (Дополните список сами). Забыл совсем, авторучками можно в морской бой играть. Давайте интернет запретим, а на входе обыскивать работников и отнимать выше перечисленные предметы. Глядишь, производительность труда возрастет...


ВМ: Какие Вы видите тенденции в развитии отрасли ПО, кроме ориентации на Интернет?
АК: Основная тенденция идет уже давно. Она заключается в том, что все меньше разрабатывают программное обеспечение на местах, идет как бы централизация этого процесса. И это, наверно, правильно. По этому поводу хотелось бы отменить весьма правильное разделение программирования в серии продуктов "1С Бухгалтерия", где ядро пишет одна группа, далее уже на "легком" языке разрабатываются несколько конфигураций с возможностью ее изменения для адаптации "на месте".

Ну еще хотелось бы отметить тенденцию к открытому коду, хотя на сколько она серьезна, судить не берусь. Возможно это просто дань моде, которая пройдет. А может быть и нет...

Так же заметно, особенно за рубежом, что все больше за программы платят рекламодатели, а не пользователи...


ВМ: Сейчас образовалось огромное количество технологий. Изучить все (или почти все) не возможно. Александр, как Вы считаете, что сейчас нужно изучать, на что обратить свое внимание подписчикам рассылки, например?
АК: Здесь надо руководствоваться конкретной спецификой работы, особенно если программирование вам нужно как приложение к вашей основной специальности.


ВМ: Эй, кому-нибудь нужен Бейсик? Шучу...


ВМ: ... . Чего бы Вы пожелали нам в Новом Тысячелетии?
АК: ... Творческих успехов :-)


ВМ: Спасибо огромное, Александр, за уделенное внимание. Буду рад поработать с Вами в 21-ом веке. Еще раз с Новым годом Вас!

Поближе познакомиться с работой Александра можно на сайте MacroHTML: http://www.agros.ru/mhtmlr

ЗАКЛЮЧЕНИЕ

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

Я сейчас обращаюсь к тем из вас, друзья, кто только-только начинает осваивать программирование. Сегодняшним домашним заданием будет следующее: поставить задачу на написание какой-либо программы (которую вы смогли бы написать), ну и конечно же задача из рубрики ДОС.

Кстати, в рубрике ДОС многое для вас может показаться незнакомым, например, различные команды и методы их применения. Интересно, получится ли у вас разобраться с материалом самостоятельно?

Помните, разобраться вы должны (для вашего же блага :) обязательно. Если самостоятельно не получится, то пишите мне, разберемся вместе.

Желаю удачи!


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

С уважением,
Вячеслав Stac Мацнев mailto:stac@stacmv.net
23.01.01.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Поиск

В избранное