Выпуск 33. Ноябрь 2015

Обзор CPAN за октябрь 2015 г. | Содержание

Интервью с Рикардо Мартинесом

Рикардо Мартинес — Perl-программист, работает над devops-сервисами для крупных клиентов из бизнес-сектора

Как и когда научился программировать?

Мое первое знакомство с программированием было в доме моего друга в 1982 году, когда мне было 12 лет. Его старший брат купил подержанный Sinclair ZX-81 и, подключив его к телевизору, я был поражен той “мощью”, которой обладали несколько строк на BASIC. Помню, мы провели все выходные программируя дурацкие алгоритмы по типу напечатать все нечетные числа от 1 до 1000 и т.п. Единственной документацией к BASIC был стостраничный мануал к этой чертовой машине без клавиш.

После этого я ходил по дому и выпрашивал купить мне одну из этих машин. Через несколько месяцев Санта принес мне Sinclair ZX-Spectrum. И у него были клавиши!!! Резиновые клавиши, но все же клавиши. С этим компьютером я проводил часы пытаясь понять секрет этих таинственных команд PEEK и POKE, которые я увидел в примерах, пока у меня не получилось нарисовать иконку на экранe и перемещать ее нажатием определенных клавиш. Круто!!!!!!

Через несколько лет мой отец купил первый PC, это был Digital XXXX с 5,25“-дискетами и операционной системой CPM, и я там нашел BASIC-интерпретатор!! и продолжил обучение. Позже у меня появился СВОЙ PC 8088 и я научился программировать bat-файлы и затем у меня появились Windows 1.0 и Access 1.0 и было круто работать со структурированными данными в базе данных. Затем я поступил в университет и познакомился со многими новыми друзьями: Fortran, Pascal, Modula-2, Cobol, C, ADA, LISP, Assembler для Motorola-68000, Informix SQL… ух!

Моей первой работой было программирование на Cobol для MVS, с IMS/DB и IMS/DC и позже DB2 и CICS.

После этого я пробовал много технологий и языков программирования (Cobol/400, RPG/400, Java, VB, VBScript, Javascript, CGI Perl, …). Последние 15 лет я в основном использовал Java, Perl и Javascript.

Какой редактор используешь?

Все зависело от платформы и языка. Я начал использовать vi в университете, но на первой работе были в основном ISPF и SPF/400. Когда я начал работать с Java и Perl, я использовал eclipse с Epic. Когда мы оставили Java позади, я некоторое время пользовался Notepad++, но вскоре вернулся на vim. Четыре года назад я наткнулся на SublimeText, и он стал основным моим редактором для программирования.

Когда и как познакомился с Perl?

В конце 90-х я написал несколько CGI-программ на Perl для листинга содержимого директорий и других базовых штук. Когда мы начали разрабатывать систему автоматизации развертывания приложений в начале 2000-х мы решили, что Perl идеально подходит под наши задачи: парсинг файлов, закачка файлов по фтп на серверы, выполнение системных команд, и т.д. и все это мультиплатформенно. Так мы разработали множество perl-скриптов в виде User Defined Processes (UDPs) из CA Harvest. С одного проекта к другому мы все больше учили Perl и находили ему все больше применений в своих имплементациях. Одним из ключевых моментов было решение отказаться от Java servlet для пакетного запуска процессов и переписать все на Perl, так чтобы отвязать наше приложение от java-сервера для выполнения фоновых задач. Время выполнения заметно улучшилось, у нас появилась гибкость и простота в сопровождении. Позже мы решили переписать все как MVC-приложение на Perl (Catalyst) и ExtJS для интерфейса.

С какими другими языками интересно работать?

Мне было интересно работать с каждым языком программирования с которым пришлось столкнуться, но в течение лет я обнаружил, что мне больше нравится работать с динамическими языками, чем с другими. Мне нравятся PHP и Ruby, также привлекает новая платформа Node.js и мне бы хотелось углубить свои знания в будущем.

Что, по-твоему, является самым большим преимуществом Perl?

Я изучал Perl в течение многих лет, но не считаю себя экспертом, больше средним программистом. У меня всегда получалось находить простой путь для реализации любого фунционала используя конкретные CPAN-модули или их комбинации. Любую проблему с которой я сталкивался в Perl у меня получалось решать поиском на perlmonks или stackoverflow. И если у меня не получалось найти описанное решение (очень редко) я находил ответ довольно быстро. По-моему, Perl самый мощный язык программирования из-за огромного сообщества его поддерживающего и огромного числа хорошо документированных расширений, которые можно легко установить и использовать.

Что, по-твоему, является самой важной особенностью языков будущего?

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

Где сейчас работаешь? Сколько времени проводишь за написанием Perl-кода?

Clarive Software Inc.. Большинство моей работы за последние 15 лет было посвящено реализации функционала для devops и простой доставки приложений для компаний, которые хотят контролировать свой цикл разработки от генерации RFC до развертывания в производстве, сохраняя всю активность выполненную всеми ролями в IT-компании и автоматизируя все повторяющиеся и моделируемые задачи.

Что такое на самом деле devops?

Большинство людей, когда говорят о devops, имеют в виду множество утилит (или наборт инструментов) для автоматизации действий, которые выполняются обычно командами операторов, самими разработчиками. Но devops идет намного дальше. Devops это слияние и эволюция таких концепций как Непрерывная интеграция (Continuous Integration), Непрерывное внедрение (Continuous Deployment), Непрерывная поставка (Continuous Delivery) или Бережливая поставка приложений (Lean Application Delivery). Компании, которые разрабатывают свой софт, обычно используют архаичные методологии разработки такие как “водопад” (“waterfall”) с монолитными длинными релизами. В последнее время задержка выхода на рынок стала наиболее важным индикатором в бизнесе, и его очень сложно улучшить используя эти старые методологии. Внедрение devops в первую очередь означает изменение в IT-культуре, что представляет собой изменение процесса разработки, от требований до запуска. Devops означает сотрудничество между командами (Управление релизами, Разработка, Тестирование, Операции и т.п.), автоматизацию технических задач (коммуникация между утилитами, внедрение софта и конфигурации и т.п.), прослеживаемость цикла и мониторинг процесса. Компания, которая полностью внедрила devops, может сократить цикл релизов для соответствия рынку и кардинально улучшить время выхода на рынок, и в то же время контролируя, чтобы все требования качества соответствовали заявленным. Возможно, описание всех плюсов реализации devops для компании в современном миру могут занять несколько страниц, но их можно обобщить в один рекламный слоган: “скорость под контролем”.

Важной частью devops реализации является понимание, что есть софт, который остается со старыми методологиями, в то время как новые технологии могут перейти на новые методологии. Сосуществование разных методологий и скоростей известно как бимодальные ИТ (BI-Modal IT) и в большинстве случаев является самой большой проблемой компании на пути внедрения devops.

Если бы смог начать свой проект с нуля, снова бы выбрал Perl?

Определенно я выбрал бы Perl. Я бы спасся от той головной боли, которую испытывал, когда java-сервер был единственным/лучшим кросс-платформенным решением для веб-интерфейсов для наших клиентов. Возможно, мы бы приняли несколько другие решения в архитектуре и выбрали другие фреймворки и пользовательский интерфейс, но в основе был бы Perl.

Заботятся ли бизнес-клиенты о технологии, на которой реализованы их сервисы?

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

На текущий момент мы в процессе добавления больше “стандартных” языков программирования для расширения нашей платформы (как, например, PHP или Ruby) так как тем, кто внедряет наш продукт, проще найти программистов невысокого уровня в этих языках.

Что думаешь о тестировании приложений, где баланс между быстрой реализацией нового функционала и стабильной поддержкой?

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

Стоит ли советовать молодым людям учить Perl сейчас?

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

Вячеслав Тихановский


Обзор CPAN за октябрь 2015 г. | Содержание
Нас уже 1375. Больше подписчиков — лучше выпуски!

Комментарии к статье

Чат