scholar_vit: (Default)
[personal profile] scholar_vit

Замечали ли вы, как относится человек работающий, и свою работу любящий, к инструментам? Это не просто железки, купленные в ближайшем магазине. Это продолжение тебя самого. Хороший инструмент легко ложится в руку; с ним работается легко и быстро. Такой инструмент подбирают годами, отбрасывая не подошедшее и бережно храня какой-нибудь особенно удачный рубанок или молоток. Человек приспосабливает инструмент под себя, но и сам потихоньку приспосабливается к инструментам. Получается совершенно уникальное сочетание, глубоко индивидуальное - другому этот набор инструментов, скорее всего, не подойдет. Ему надо подбирать свой собственный, придирчиво решая, годится-не годится. Это важный выбор для любого, кто работой кормится: разница в качестве и скорости работы с подходящим и неподходящим инструментом очень велика.

Моя соавтор Л. - врач-невролог. Сколько у неё молоточков и камертонов, собранных по всему свету! "Вот этот я беру на обходы, вот этот - походный, он не оттягивает карман. А посмотри на этот - какой удобный, правда?"

А мой дедушка чинил всей Риге радиоприёмники. С какой гордостью он показывал свои инструменты - отвертки и отверточки, паяльники всевозможных форм и размеров, какие-то немыслимые пинцеты и клещи, тисочки, струбцинки, лобзики и пилочки для корпусов. "Вот эта отвертка - американская. Ты посмотри, как она хорошо сидит в руке. А эта лупа - немецкая. Цейсовская".

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

Я работаю в нескольких местах. Основное - компания, занятая R&D. Кроме этого, я читаю лекции в университете, пишу статьи. В последние годы немного консультирую. Если не считать лекций и бесед со студентами, моя основная продукция - это текст. Форматированный текст на английском языке со списками литературы, рисунками и графиками.

Главный мой инструмент - редактор. Если не ошибаюсь, [livejournal.com profile] vitus_wagner любит говорит, что редакторов ровно два: Emacs и vi, и убедить пользователей одного из них в преимуществах другого - занятие безнадёжное. Я принадлежу к первому лагерю. Собственно, я не работаю в Emacsе - я в нём живу. Я печатаю в нём почти все тексты, читаю почту, пишу e-mailы, и т.д., и т.п. Эти заметки я тоже пишу в Emacsе, а когда закончу - скопирую и вставлю в окно браузера. Мне так удобнее: пальцы сами помнят emacsовские комбинации клавиш, и набирать текст в любой другой среде получается медленнее.

Огромное большинство моих текстов форматировано в LaTeXе. Этот вот - редкое исключение. А так письма (не e-mailы), статьи, отчеты, заметки, методички для студентов, слайды, постеры и всё остальное написано в LaTeXе. Когда я давным-давно переписывался с иммиграционной службой США (доказывал, что наша семья заслуживает грин-карты), я начал с того, что написал LaTeXовский пакет для этого. Пожалуй, этот инструмент (LaTeX) из всего набора я знаю лучше всего. Можно сказать, что мою работу можно измерить в количестве LaTeXовских страниц в день. Я не буду перечислять те пакеты, которыми пользуюсь: их много, и если я этим займусь, то конца не будет. Упомяну два, потому что они есть практически в любом моём файле: amsmath и hyperref. Первый незаменим для сколько-нибудь серьёзной математики, а второй автоматически расставляет гиперссылки.

Как правило, результат я сдаю в виде PDF-овских файлов. Поэтому вызываю pdftex, точнее pdfetex. Так как рисунки выполнены в PostScriptе, я обычно подключаю пакет ps4pdf. Списки литературы делаются BibTeXом.

Рисунки бывают двух типов: просто рисунки и графики. Первые я делаю в PSTricks. "Парадные" графики - для публикации, например, - тоже в нём. Графики для "расходных" текстов - в gnuplotе. Gnuplot позволяет быстро нарисовать много графиков, особенно в пакетном режиме, но его результат мне не всегда нравится. Я присматривался к TikZ/PGF и к MetaPost, но что-то мне PSTricks пока кажется удобнее.

Расчеты тоже бывают двух типов. Символические - когда результатом является формула, - и численные, когда результатом является таблица. Для расчетов первого типа хороша maxima. В ней же можно делать небольшие численные расчеты, вроде тех, которые мои коллеги делают в matlabе: ну там пару матриц диагонализовать и так далее. Для серьёзных численных расчетов приходится писать программы. В последнем случае для меня обычно критичны два ресурса: время, за которое я напишу программу и время, которое она будет выполняться. Эти ресурсы комплементарны: язык, на котором программа пишется быстро, обычно делает наименее оптимальный код. Быстрее всего я пишу на Perlе, и в большинстве случаев этого достаточно - я крутыми численными расчетами обычно не занимаюсь. Если же Perlа не хватает, перехожу на C. На C++ я обычно не пишу: если мне нужен объектно-ориентированный код, то я гораздо быстрее напишу его на Perlе, и разница в скорости выполнения между Perlом и C++ этой разницы в удобстве мне не компенсирует. Если нужно серьёзно работать с числовыми матрицами - скажем, проинтегрировать максимальное собственное значение матрицы A(t), зависящей от параметра t, то тут хороша фортранная библиотека lapack. В принципе у неё есть интерфейсы к C и C++, но какие-то они недоделанные. Такое впечатление, что это костыли для тех, кто fortranа боится. Мне проще вызывать её из fortranа.

Кстати, удивительна живучесть fortranа. Многие программисты, не имеющие дела с инженерными расчетами, уверены, что fortran давно умер. Их удивило бы, что автомобиль, в котором они едут, самолёт, в котором они летят, и даже дом, в котором они живут, был рассчитан, скорее всего при помощи этого языка. Когда я лет десять назад работал в Годдардовском космическом центре, одним из моих первых заданий было разобраться и подправить фортранную программу для расчета границ территории, которую может сфотографировать спутник на заданной орбите. Заглянув вовнутрь, я обнаружил, что судя по датах в комментариях, некоторые модули были написаны до моего рождения. Думаю, что её разрабатывали для оценки ущерба от советских спутников-шпионов. Недавно я встречался с ребятами из Годдарда; они говорят, что эта программа с моими поправками бегает до сих пор.

Но я отвлёкся. Итак, мои тексты собираются из разнородных элементов, которые, в свою очередь, делаются разными программами. Я достаточно ленив, чтобы заниматься этим вручную. Человек должен думать, а работать должен компьютер. Поэтому сборкой руководит make. Но объяснять make, что для отчета foo.pdf нужен график bar.eps, который делается gnuplotом из файла baz.dat, который в свою очередь..., - мне тоже лень. За годы работы у меня накопилось много правил для make, а также самописных скриптов, которые анализируют файлы и добавляют зависимости в файл depend. В итоге достаточно сказать волшебные слова "make all", и компьютер сделает всю скучную и монотонную работу сам - оставляя мне время на интересные вещи.

Я работаю на нескольких компьютерах. Поэтому надо синхронизировать проекты между ними. К тому же бывает полезно хранить историю файлов. Эти две задачи у меня решает CVS (CVS через ssh для удаленных репозиториев). Я присматривался к subversion, но что-то мне CVS пока удобнее - к её странностям я привык.

Это - основные инструменты. Есть ещё клей между ними - все эти однострочники на shellе, sedе и awkе, все эти diffы с grepами. Это даже инструментами назвать трудно - маленькие штучки, о которых не думаешь. Пока они есть, не думаешь. А вот без них сразу становится тяжко. Так что у меня работать на чем-то, кроме Unixо-подобных систем, не получается. Какой именно *nix, не так важно: я работал на самых разных. Есть там Emacs, TeX, maxima и линейка инструментов от GNU - и достаточно. Хотя в последнее время мой компьютер почти всегда оказывается Debianовским. Возможно, из-за моей лени.

Понятно, что при моём подходе всякие "десктопные среды" вроде KDE и Gnome только мешают. У меня бегает fvwm, внешний которого я не менял уже лет двенадцать (при переходе на fvwm2 мне пришлось потратить некоторые усилия, чтобы восстановить привычный look and feel).

Вот за таким компьютером я и провожу рабочее время.

Date: 2007-05-24 04:59 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Забавно. А вот я, наоборот, в общем к набору инструментов довольно равнодушен (хотя он у меня похожий). В частности - люблю инструменты, которые можно пользовать "из коробки" (и нынешние дистрибутив linux ценю именно за это - настройка винды после установки - занятие куда более утомительное). Довольно часто просто переставляю систему "с нуля" с потерей практически всех старых настроек.

Редакторы - их где-то три - emacs, который опять же я ценю как программируемый редактор (мне приходится время от времени писать для него скрипты) и как стандарт де-факто для поддержки разных средств программирования (для vi разные скрипты народ пишет во вторую очередь, если вообще пишет), но для мелких правок обычно пользую joe или vi. Или mcedit (последний обладает одной важной для меня функцией - он умеет показывать позицию курсора как смещение в байтах относительно начала файла).

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

Date: 2007-05-24 05:02 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Именно требованием отсуствия зависимости, к сожалению, практически полностью отсекается одна из самых удобных на мой взгляд языковых систем - O'Caml.

Date: 2007-05-24 06:54 am (UTC)
From: [identity profile] a-konst.livejournal.com
а что ты понимаешь по "технологической зависимостью"?

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 07:03 am (UTC) - Expand

Re: Reply to your comment...

From: [identity profile] a-konst.livejournal.com - Date: 2007-05-24 07:06 am (UTC) - Expand

Re: Reply to your comment...

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 08:18 am (UTC) - Expand

Re: Reply to your comment...

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-24 06:52 pm (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-24 06:51 pm (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 08:13 pm (UTC) - Expand

Date: 2007-05-24 07:49 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Одно из требований к инструменту у меня - он не должен вызывать технологическую зависимость

А чем объясняется такое требование? Ну я понимаю, если речь идет о какой-нибудь проприетарной среде - может обанкротится или прекратить выпускать данный продукт фирма производитель, может отсутствовать версия для архитектуры, на которой тебе надо работать (хотя и это с нынешним распространением всяких виртуальных машин уже не критично). Но TeX, Emacs и GNU coreutils уже никогда и никуда не денутся.

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 07:58 am (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-24 08:04 am (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 08:16 am (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-24 08:50 am (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 08:58 am (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-24 09:02 am (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2007-05-24 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-25 12:02 am (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-25 07:05 am (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-25 12:02 am (UTC) - Expand

(no subject)

From: [identity profile] aburachil.livejournal.com - Date: 2007-06-03 05:44 pm (UTC) - Expand

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-05-27 02:35 pm (UTC) - Expand

Date: 2007-05-24 11:58 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com


Ну вот смотрите. В принципе в Emacsе положение курсора
(включая оффсет в байтах) можно узнать по команде C-x=, которая выдает
результаты типа

Char: C-j (012, 10, 0xa) point=345 of 498 (69%) column 152

Но можно написать аналог и самому:
(defun show-current-offset()
  "Show the current offset from the beginning of the file"
  (interactive)
  (count-lines-region (point-min) (point)))

Такая функция выдает, например,
Region has 15 lines, 680 characters

Я бы занес эту функцию в .emacs, повесил бы на какую-нибудь клавишу, и
никакой mcedit мне был бы не нужен.




Таких вещей в моих дот-файлах десятки и сотни. Что-то было написано
вчера, что-то - полтора десятка лет назад. Всё это делает мою работу
удобной. И Вы предлагаете мне всё это снести и "поставить систему с
нуля"?!! Я никогда такого не делал. Мой домашний компьютер пережил
несколько релизов slackware и debianа, смен дисков, процессора и всего
остального, но при переходах я всегда заботился о том, чтобы все эти
примочки уцелели. И заботливо переносил их на другие компьютеры, на
которых я работаю.




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

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-25 07:14 am (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-25 04:17 pm (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-25 07:28 pm (UTC) - Expand

Date: 2007-05-24 05:15 am (UTC)
From: [identity profile] alex-tomas.livejournal.com
несколько лет пользовался gnus'ом для чтения почты. и меня всегда доставала одна вещь: начал вытягивать сообщения - кури. делать с ним больше ничего нельзя. и не дай бог оказался медленный линк или проблемы с сервером ...

Date: 2007-05-24 05:53 am (UTC)
From: [identity profile] lz.livejournal.com
Мне по работе нужны текстовый редактор, эл. почта и браузер, редко - что-нибудь для обработки графики. Так как это все есть практически на любом компьютере, работающем под виндой, то и работать я могу практически на любом, но как же это неудобно...
Для меня важны те самые мелкие настройки/подпрограммки, которые "затачивают" все эти большие пакеты под меня и превращают их в рабочий комплекс.

Date: 2007-05-24 06:03 am (UTC)
From: [identity profile] vzaliva.livejournal.com
у меня много похожих с вами инструментов. Я еще для графиков пользусь
graphviz и R (http://www.r-project.org/).

Date: 2007-05-24 06:45 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Я думал об R, но что-то он какой-то большой. Если надо будет статистикой заниматься, наверное, освою.

Vim

Date: 2007-05-24 06:09 am (UTC)
From: [identity profile] youngracoon.livejournal.com
Есть такой редактор Vim (www.vim.org). Не один год признается лучшим редактором в мире Linux. В этом редакторе работает Larry Wall, создатель Perl :) От себя добавлю, что получаю истинное удовлетворение от этого инструмента - он может все, что могу представить, и даже намного больше :)

Re: Vim

Date: 2007-05-24 07:59 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
А вот [livejournal.com profile] besm6 недавно пересел с vim на emacs. (недавно - это года три назад) До этого говорил, что Emacs это хорошая операционная система, только текстовый редактор туда положить забыли. Но вот в какой-то момент признал, что да - текстовый редактор пригодный к употреблению там появился. Я вот пока держусь.

Кстати, говоря о том что существует два текстовых редактора я имел в виду не vi вообще, а именно vim.
классический vi по сравнению с vim это как какой-нибудь nano по сравнению с Emacs. Что, спрашивается, каждую букву руками набирать?

А вот vim всё-таки очень много чего не умеет (из того, что умеет emacs). Почту читать не умеет, web браузить не умеет, файловым менеджером работать не умеет, интерфейсом к gdb или системе управления версиями работать тоже не особо умеет. В общем, до интегрированной среды, каковой является emacs, не дотягиват.

Другой вопрос - а так ли уж это нужно?

Re: Vim

From: [identity profile] youngracoon.livejournal.com - Date: 2007-05-24 06:01 pm (UTC) - Expand

Date: 2007-05-24 06:17 am (UTC)
From: [identity profile] detunized.livejournal.com
Очень интересно. Я пользуюсь многими инструментами (тоже компьютерные), среди них и фотошоп, и Visual Studio (уже меньше), и ruby, но по-настоящему незаменимых у меня три: Far, Firefox и Google (все сервисы, не только поисковик). Последний заменяет мне почти все, включая калькулятор.

Date: 2007-05-24 06:20 am (UTC)
From: [identity profile] dimrub.livejournal.com
А матлаб не пробовали?

Date: 2007-05-24 06:47 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Я смотрел, как им пользуются коллеги, и меня это не вдохновило. Мне показалось, что то, что они делают в matlabe, быстрее делать другими инструментами. Возможно, я неправ.

(no subject)

From: [identity profile] ny-quant.livejournal.com - Date: 2007-05-25 03:30 am (UTC) - Expand

Date: 2007-05-24 07:53 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
автомобиль, в котором они едут, самолёт, в котором они летят, и даже дом, в котором они живут, был рассчитан, скорее всего при помощи этого языка

А вот я на 100% уверен, что дом в котором я живу, не рассчитан при помощи Фортрана - ибо он построен практически одновременно с появлением Фортрана - в середине 50-х. Так что логарифмическая линейка - rulez.
А вот при строительстве дома в деревне не применялась даже и логарифмическая линейка, хотя дом построен в 1999 году.

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

Date: 2007-05-24 11:52 am (UTC)

Date: 2007-05-24 11:55 am (UTC)
From: [identity profile] slobin.livejournal.com
Фортран фортрану рознь. Фортран-90 по уровню примерно средний язык 80-х (мне очень напоминает Аду (не 95, а исходную)). Причём некоторые решения в нём откровенно лучше, чем в Аде. Говорят, что Фортран-2003 -- это нормальный современный язык (объекты, параметризация типов), но его я не изучал.

... Гномическое настоящее ...

Date: 2007-05-24 07:19 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Будем считать, что я имел в виду американских программистов :)

(no subject)

From: [personal profile] vitus_wagner - Date: 2007-05-25 07:16 am (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-25 04:21 pm (UTC) - Expand

Date: 2007-05-24 08:40 am (UTC)
From: [identity profile] vadim-i-z.livejournal.com
Да уж. Я при сходных потребностях сижу не в *nixах, а в Той ОС, Которую Нельзя Называть. Так что ассортимент кардинально другой. MiKTeX, WinEdt, Mathematica etc.

Date: 2007-05-24 02:30 pm (UTC)
From: [identity profile] ex-feuerbach769.livejournal.com
Mathematica и под *nixами юзабельна. А maxima, скорей всего, и под Той ОС.

(no subject)

From: [identity profile] vadim-i-z.livejournal.com - Date: 2007-05-24 04:27 pm (UTC) - Expand

(no subject)

From: [identity profile] ex-feuerbach769.livejournal.com - Date: 2007-05-24 05:06 pm (UTC) - Expand

(no subject)

From: [identity profile] scholar-vit.livejournal.com - Date: 2007-05-25 01:08 am (UTC) - Expand
From: [identity profile] belonesox.livejournal.com
Раз все стали доставать инструменты...
Достану и свои (по TeXу).

Сборка - Ant, Python.
Версии - CVS.
Используется - MikTeX, Inkscape, Graphviz, Freemind, Ant, TeXNicCenter
Python 2.4 (+Py2tex, SciPy, NX)

Дистрибутив TeXа - Miktex
Редактор - TeXNicCenter.

Иллюстрации:
Graphviz (Dot, Neato) -> EPS -> PDF.
SVG -> EPS -> PDF.
LateX pictures over SVG (формулы поверх графики).
Mindmaps (Freemind) -> SVG -> EPS -> PDF.
Python -> SVG -> EPS -> PDF.
Python -> Graphviz -> EPS -> PDF.
Metapost -> EPS -> PDF (Deprecated, постепенно избавляюсь).

Математика: wxMaxima

Date: 2007-05-24 01:31 pm (UTC)
From: [identity profile] aburachil.livejournal.com
Так всё таки fvwm или fvwm2 ?

Date: 2007-05-25 12:04 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
Когда-то был fvwm. Потом я перешёл вместе с дистрибутивом на fwvm2

Date: 2007-05-24 01:36 pm (UTC)
From: [identity profile] http://users.livejournal.com/_rowan_tree_/
Для скриптов и обработки числовых данных недавно стала пользоваться ruby. Там хороший интерфейс к файловой системе и прочим системным переменным, и язык удобный.
Остальное очень похоже :-)

Date: 2007-05-24 04:56 pm (UTC)
From: [identity profile] vadim-i-z.livejournal.com
Резюмируя впечатления от прочитанного, вспомнил старый анекдот про то, как "еще два адреса узнал".
Сохраню тред и буду изучать кое-что из рекомендуемого софта...
Свой набор под Ту ОС выкладывать не стану - расфрендят :-)

Date: 2007-05-24 11:27 pm (UTC)
From: [identity profile] dmpogo.livejournal.com
+20 !!!

вплоть до fvwm (и засовывая в данный момент очередную lapackoвскую программу в фортрановский код)

Date: 2007-05-25 07:29 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Жуть какая. Жить в доме не имеющем истории. Я впрочем, давно знал, что домовых и прочий Малый Народец на "Мэйфлауэр" погрузить забыли, но чтобы до такой степени...

Profile

scholar_vit: (Default)
scholar_vit

January 2019

S M T W T F S
  12345
678 9101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 8th, 2026 08:45 pm
Powered by Dreamwidth Studios