Unix на работе. Часть 2: Софт
Рассказываю про софт «которого нет» под ОС которая «не нужна». Как обычно с юмором и картинками.
Первая часть тут.
Минутка истории
История ПО начиналась с продажи абсолютно закрытых программ, продаваемых за огромные деньги.
Речи не было о доступе к исходникам и возможности самостоятельной сборки, потому что такая возможность автоматически означала тиражирование и все сопутствующие сверхдоходы от перепродажи уже собственной сборки.
Юниксы тоже были закрытыми и платными.
Собственно все «настоящие» юниксы таковыми остаются до сих пор. Из тех кто не канул в лету. Сейчас они чаще всего поставляются как часть дорогого программно-аппаратного решения, как самостоятельное решение уже даром никому не нужны.
Но потом появился один пассажир, который навел шороху. А затем и другие крутые парни подтянулись.
Вообщем с тех пор пластмассовый мир победил индустрия разработки ПО сильно изменилась:
возникло движение Open Source, целая отдельная культура, распространяющая идею открытых исходников.
Под самый закат эры персональных компьютеров проняло даже Микрософт, которые стали выкладывать в публичный доступ очень много чего из своих ключевых проектов и технологий.
Но конечно же проприетарный софт никуда не делся и в перспективе не денется:
стало общепринятой практикой строить закрытые системы на открытом софте, переодически донатя авторам.
Cпонсорством (деньгами), работой (патчами) или оборудованием.
Культура Unix
В отличие от пользовательских Mac и Windows, где у каждой более-менее сложной программы были и есть свои прайс, реклама и раскрутка — в мире юниксов программы были прежде всего утилитами.
Ценилась возможность комбинировать эти утилиты между собой и собирать в цепочки обработки:
find . -type f -exec grep -i "test" {} + | wc -l
На примере выше используются три разные программы: find, grep и wc, соединенные в одну цепочку обработки.
Ищет слово "test" без учета регистра во всех файлах в текущем каталоге, затем считает общее количество вхождений.
Это и есть тот самый «Unix way»:
куча мелких утилит, каждая из которых делает что-то одно, но хорошо. И все эти утилиты можно комбинировать между собой.
Само собой что у такого подхода есть определенные недостатки, ключевой из которых:
Софт которого нет
Из-за философии Unix и доступных исходников, а также ввиду отсутствия коммерческого интереса — ключевой софт достаточно давно перемешался между собой зависимостями и слился в практически единую платформу, которая однотипна и примерно одинаково работает во всех *BSD и Линуксах:
Все средства разработки, все ключевые библиотеки, базовые консольные утилиты — лет 20 как однотипны и однообразны. Везде.
Поэтому что во FreeBSD, что в Убунте у вас будет практически одинаковый grep, awk, mc, bash, perl, python, qt, gtk и так далее.
И вообщем-то этим базовым софтом легко и просто закрывается вся подножная автоматизация и большая часть рутинных задач, возникающих во время работы. Это все было про плюсы.
Профессиональный софт, для профи
Существует куча ПО с длинной историей, выпускаемого по-сути только для профессионалов.
Некоторый такой софт вы точно знаете:
продукция Adobe (в первую очередь Photoshop), софт для 3D-моделирования (Maya, 3DMax), софт для инженеров и архитекторов (Autocad) и подобное.
Но конечно менее известных узкоспециализированных систем куда больше.
Для такого типа ПО, операционная система является лишь средством запуска, а законченное решение (для работы) представляет собой специально подобранное и настроенное оборудование, поддерживаемую и настроенную ОС и установленный поверх профессиональный софт.
В случае фотошопа это например настройка цветового профиля на мониторе, для Maya/3DMax — тонкая настройка аппаратного ускорения при отрисовке.
Поставляется такой софт естественно с закрытыми исходниками, оптимизируется только под поддерживаемые платформы.
Думаю вполне очевидно что в философию «Unix Way» такое ПО не вписывается никак, поэтому ожидать релиза какого-нибудь фотошопа под FreeBSD — точно не стоит.
На уровне прикола это можно сделать (сам такое делал, каюсь). Но ожидать от подобной связки рабочего функционала не надо.
Тем не менее ситуация постепенно исправляется, развиваются открытые аналоги: Blender, Gimp, LibreOffice — все эти проекты за последние 10 лет шагнули очень далеко вперед.
Мне лично сложно судить о возможности полной замены фотошопу с 3дмаксом — поскольку никогда профессионально не занимался графикой.
Но как минимум студенты и начинающие авторы используют открытый софт в полный рост, с достаточно вдохновляющим результатом.
Также вендоры профессионального ПО постепенно начинают активную поддержку Linux и все больше такого софта начинает хоть как-то в нем работать.
Старый софт
Вы еще помните что когда-то был DOS? Под который написали кучу софта, часть из которого до сих пор активно используется.
Да кстати если вдруг не знали:
MS-DOS for Embedded Systems is a cost-effective solution for simple legacy applications. Available as a ROM-based or disk-based operating system, MS-DOS has minimal resource requirements and is ideal for small, mobile applications and those that do not need a user interface.
Чтобы запускать старый софт на новом или неподдерживаемом оборудовании нужен эмулятор. Чем больше эмуляторов вам доступно тем больше софта вы сможете использовать.
Вообщем в Unix мире с эмуляцией полный порядок:
всевозможных эмуляторов устаревшего железа и окружения — тьма.
Dosbox
Во-первых есть Dosbox, который позволяет закрыть наверное все возможные вопросы с софтом для DOS и его окружением.
Если у вас на предприятии или в НИИ что-то еще осталось на DOS — смело можете сдавать в музей ваши 386/486е и переходить в Dosbox.
Wine
Затем конечно Wine, который при наличии времени и прямых рук позволяет запустить даже ААА-игры последнего поколения:
Я вообщем-то не геймер, поэтому ценю Wine за возможность запуска более обывательского софта:
Qemu
Ооочень интересная штука, позволяющая «то что нельзя, но очень хочется», например запустить HP-UX на обычном компе:
Еще эта штука очень портабельная, поэтому присутствует в самых неожиданных местах.
Mame
Для самых еб#нутых злостных декадентов есть Mame, который позволяет запускать совсем дикий не-x86 софт:
Редкости которые есть но я лично пока не трогал:
AXPbox - эмулятор Alpha;
FS-UAE - эмулятор Amiga;
Supermodel - эмулятор Sega.
Вот тут прям склад эмуляторов для всяких старых игровых платформ, наслаждайтесь кому интересно.
Подводя итог
С софтом в Unix все очень даже хорошо.
Единственная область где дела не очень:
современный профессиональный узкоспециализированный коммерческий софт.
Его в юниксах не было, нет и скорее всего не будет:
Как только ОС превращается в кнопку «пуск» для какого-то коммерческого приложения — все, в юникс-окружении такому софту делать нечего.
При этом устаревший софт скорее всего можно будет запустить под юниксами в эмуляции.
To be continued..
В следующей части расскажу об особенностях разработки под Unix, как это правильно делать и наслаждаться а не страдать.
Продолжение тут.