3f-lab: философия консольного программирования

Давненько не писал я на тему среды разработки 3f-lab. Кстати говоря, она уже ищется Google'м. Публикую одну из «философских» лекций с прежней версии сайта. Надеюсь, этот текст послужит популяризации идей консольного программирования.

Начало см.:
mtaalamu.ru/blog/coding/449.html
mtaalamu.ru/blog/coding/445.html
mtaalamu.ru/blog/coding/373.html
mtaalamu.ru/blog/coding/379.html
mtaalamu.ru/blog/coding/371.html



(Внимание! Под катом многа букаф!)

Бритва Оккама в программировании

Начать мне хотелось бы с напоминания о философской концепции, хорошо известной программистам — Бритве Оккама. Этот методологический принцип гласит: «Не следует привлекать новые сущности без самой крайней на то необходимости».

Человеческая память фантастически емкая. Каждый, наверно, удивлялся, как легко удается вспомнить текст песни, услышанный 15, 20 или даже 30 лет назад, причем всего один раз. А вот решить уравнение двумя разными способами гораздо сложнее, даже если знаешь оба. Мозг часто отказывается выполнять двойную «вычислительную» работу. Способ, которым работа выполняется, обусловлен зачастую не эффективностью, а привычками, модой, инструментарием, который оказался под рукой.

Соотношение запоминательных и творческих возможностей мозга приблизительно равно соотношению динамики роста емкости жестких дисков и частот, на которых работают процессоры компьютеров. Если за последние 20 лет типичная емкость жесткого диска увеличилась с 10 Мб до 500 Гб (в 50000 раз), то частота процессора — всего лишь с 10МГц до 4ГГц (всего в 400 раз). Эта нехитрая арифметика иллюстрирует тот факт, что «принятие решений» стоит гораздо дороже, чем простое хранение информации.

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

Культура, цивилизация создают иллюзию интеллектуального всемогущества современного человека. Компьютерные технологии эту иллюзию усилили многократно. Кажется, что стоит лишь хорошенько порыться в справочниках плюс несколько ночей отказать себе в полноценном сне, иными словами слегка «напрячься», и выдающееся интеллектуальное творение (компьютерная программа, литературное произведение и т.п.) будет явлено миру. В молодости, наверно, каждый испытывал подобные порывы творческого энтузиазма. В молодости не хочется верить в такие поговорки, как «укатали Сивку крутые горки», «гладко было на бумаге, да забыли про овраги». Однако на практике очень многое зависит от правильного выбора методологии, от способа, которым достигнут результат. «Цена вопроса» может оказаться неприемлемо высокой, даже если результат достигнут. Эта проблема занимала еще античных авторов («пиррова победа», «сизифов труд» и т.п.). Профессионал, да и просто человек зрелый и опытный. не может позволить себе приступать к делу хотя бы на 80% не рассчитав силы и ресурсы (на 100% расчитать их не получается, наверно, ни у кого и никогда, если речь не идет совсем уж о примитивных задачах).

Сегодня, наверно, ни для кого не секрет, что компьютер — это не только мощный инструмент для решения широкого круга задач, но и источник вполне конкретных проблем. Есть даже немало людей, считающих, что некоторые задачи легче решать без компьютера, чем с его помощью. Например, журналист старой закалки напишет материал на бумаге быстрее, чем его молодой коллега за компьютером. Хотя бы за счет того, что на приведение электронного устройства в рабочее состояние (загрузка, открытие текстового редактора) требуется несколько минут. За это время с помощью ручки и бумаги можно создать вполне готовую к публикации заметку. Компьютерная программа, как и газетный материал, рождается в голове человека, и никакие «сверхудобства» не заменят возможности быстро и адекватно зафиксировать удачную мысль. Иногда листок бумаги и огрызок карандаша более пригодны для этого, чем IDE Eclipse. Такая же ситуация с бухгалтерией: старожилы в один голос говорят, что до появления компьютеров бухгалтеров было меньше, а объем производства в стране — больше. Парадокс, э?

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

Производители ПО зачастую заманивают пользователей обещаниями облегчить труд, автоматизировать выполнение тех или иных задач. На поверку же оказывается, что заменить человека в некоторых делах не так-то просто. Каждый пользователь сталкивался с неуместным «умничатьем» некоторый приложений. Например, Microsoft Word делает прописной букву, следующую за словом с точкой. Многим это нравится. (Такие люди, наверно, и заполонили Интернет безграмотной писаниной). Не могу сказать, что пишу слишком уж грамотно, тем не менее всегда держу и буду держать эту опцию отключенной. По крайней мере до тех пор, пока MS-Word не будет руководствоваться правилами более сложными, чем «если слово закончилось точкой, то следующая буква должна быть заглавной». Здесь мы имеем дело не просто с избыточностью, а с дурной избыточностью, когда компьютер предлагает не решегие проблемы, а суррогатное решение, иллюзию решения, подменяя красивыми элементами GUI-интерфейса сложную задачу проверки грамматики, которую образованный человек и так прекрасно выполнит. Такие «удобства» делают и без того безграмотных и слишком уж надеющихся на компьютер людей еще более безграмотными.

Можно привести массу других примеров мешающей избыточности компьютерных программ: вставляешь диск в дисковод — его пытаются воспроизвести совершенно неадекватным проигрывателем. Сохраняешь документ — его предлагают поместить в папку с дурацким названием. Конечно, всё это настраивается, но речь о другом: следует ли пользоваться всеми этими странными возможностями, «заботливо» кем-то для вас предусмотренными?

IDE — программы для создания программ — тоже страдают «дурной избыточностью» (по аналогии с гегелевской «дурной бесконечностью»). Визарды, десятки возможностей, воспользоваться которыми многим не придет даже в голову, и прочая мишура скорее служит для «завоевания рынка» и отдаляет программиста от реального результата, чем способствует повышению производительности труда. Возможно, в случаях, когда коллектив из десятков кодеров трудится над созданием сложного проекта, такие вещи, как Eclipse и незаменимы. Но рынок нуждается не в программах-монстрах, а в небольших приложениях для решения конкретных прикладных задач или даже в расширении возможностей уже имеющихся решений за счет написания дополнительных модулей и плагинов. В таких условиях использовать Eclipse — всё равно что стрелять из пушки по воробьям. Точно так же, как для написания служебной записки на два-три абзаца совсем необязательно открывать Microsoft Word или другой громоздкий редактор.

Таким образом, применительно к программированию бритва Оккама — это полный контроль над средой разработки. В ней не должно быть ни одного каталога, которым вы не пользуетесь и никогда не воспользуетесь, ни одного скрипта, принципов работы которого вы не понимаете, ни одного пункта меню или кнопки, которая во время работы будет попадать в поле вашего зрения и вызывать вопрос «шо цэ за фигня». Только в этом случае можно сосредоточиться на обдумывании и написании программы, а не на фантазиях на тему «автоматизированного программирования».

Язык Java и пакеты, включенные в стандартный дистрибутив JDK это уже само по себе огромное богатство, которое не нуждается в красивых обертках. Использовать сложные IDE — значит тратить время не на освоение языка, а на освоение приемов работы с инструментами, на смену которым завтра придут другие, радикально отличающиеся от существующих, ставя своих приверженцев перед необходимостью опять переучиваться. И хотя человеческая жизнь достаточно длинна для того, чтобы время от времени позволять себе такую роскошь, но гонка вооружений в сфере IT, свидетелем которой я стал в последние 15 лет, свидетельствует, что КПД от таких переучиваний может быть не только нулевым, но и отрицательным.

Среда 3f-lab, которую я предлагаю здесь вашему вниманию, как раз и создана с учетом принципа необходимой достаточности. Это не программа, которую нужно инсталлировать. Это просто совокупность каталогов и приемов работы, некоторые из которых могут быть оформлены в виде скриптов (раньше я пользовался скриптами Makefile, теперь всё чаще применяю ant). 3f-lab — это не IDE, это дисциплина, то есть соображения по поводу того, как лучше достичь определенного результата и почему те или иные действия (хранение файлов, компиляция, дистрибуция) нужно выполнять так, а не иначе.

Когда-то землю населяли гигантские ящеры, слишком неповоротливые для адаптации к меняющемуся миру. Они вымерли. Выжили небольшие млекопитающие размером с мышь, у которых процентное отношение массы мозга к массе тела было в разы более эффективным, чем у динозавров, хотя сама масса и была ничтожной по сравнению с массой древних монстров. Думаю, в недалеком будущем подобная революция произойдет и в мире компьютерных программ.
  • +3
  • 24 января 2010, 20:32
  • yababay

Комментарии (8)

RSS свернуть / развернуть
+
0
1С — хотели сделать универсальный инструмент а получили в итоге кривое средство разработки фактически ;)

Все написано в тему.
avatar

Sergei_T

  • 24 января 2010, 22:57
+
0
1C для решения российских бухгалтерских задач весьма и весьма адекватное средство, но когда начинаешь там пытаться что-то сделать с XML, ADO и прочими распространенными API начинается головная боль: привычные вещи пишешь на каком-то безумном синтаксисе, всё равно что разговаривать набрав в рот камней. Поэтому быть одновременно 1С-программистом и просто программистом невозможно. Или жертвуешь «майнстримными» концепциями программирования и пишешь на ублюдочном языке (т.е. становишься бухгалтером с углубленным знанием ПК), или бросаешь бухгалтерские игрища и занимаешься нормальным программированием.

Кстати, ни в одной стране мира бухгалтерский учет не сжирает столько ресурсов в национальной экономике, как у нас. И программистов в фирмы берут в первую очередь для обслуживания бухгалтерии. Пока такой порядок будет сохраняться — ничего не изменится. Современная бухгалтерская система — паразит на теле экономики. Кажется, это смутно понимают и сами бухгалтера…
avatar

yababay

  • 24 января 2010, 23:08
+
0
С другой стороны 1С сейчас пытается объять все сферы деятельности предприятия не только бух. учет — эдакий SAP отечественный.

Не хочу заниматься 1С — есть возможность выучить — но не хочу ничего о ней знать. Тем более рынок труда сложился у нас по этой теме и много особо там не заработаешь, да и не хочется жертвовать временем ради неинтересного отупляющего программирования на каком-то уродском языке
avatar

Sergei_T

  • 24 января 2010, 23:24
+
0
не сказал бы что рынок сложился — грамотный одинесник нужен везде и всегда и хорошо оплачивается… как и знающий своё дело программист. 1с 8ра нормальная штука — но тока для «зашибания бабла» хочу подметить в крупных обьёмах — так как и уровень ответственности тоже велик.
А по поводу IDE я всетаки на slax поставил себе в связке с JDK — Eclipse+java+PHP — долго мучался с настройками и наконец то разобрался — думаю получится оригинальная статья — так как подобной толком не нашёл на русском языке — на днях размещу
avatar

FREExLOADER

  • 25 января 2010, 00:56
+
0
Eclipse + Java говоришь ? Eclipse без Java не бывает, оно на нем написано А вот про PHP-плагин не знал.
Цикл статей по Eclipse был бы очень полезен, материала действительно мало в сети толкового. Меня, например, премудростям Eclipse один немец по скайпу учил .
Я тоже, наверно, подключусь к этой теме (про GWT-плагин для Eclipse есть материал). Камрад Durman тоже про Eclipse что-то собирался написать, так что ждем почина от тебя!
avatar

yababay

  • 25 января 2010, 01:21
+
0
чтоб все грамотно было на днях присоединюсь к разработчикам slax — размещю пару модулей — в описаниях буду ссылатся на маталаму — где развёрнуто всё опишу ехе хех не зря столько парился — пускай пользуются все — в этом и сила линукс
avatar

FREExLOADER

  • 25 января 2010, 09:59
+
0
точнее мтааламу — а маталаму просто легче выговаривать
avatar

FREExLOADER

  • 25 января 2010, 10:01
+
0
Автоматизация технологии хоть и стоит особняком от сетей, но проблемы абсолютно теже!
+1000000 .
avatar

Markony

  • 25 января 2010, 15:03

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