Зачем изучать Perl, Python, Ruby, если компания использует С++, С# или Java в качестве языка приложения?

Интересно, почему разработчик С++, С#, Java хочет изучить динамический язык?

Предполагая, что компания не переключит свой основной язык разработки с С++/С#/Java на динамический, какой будет использование для динамического языка?

Какие вспомогательные задачи могут выполняться динамическими языками быстрее или лучше после всего лишь нескольких дней обучения, чем со статическим языком, который вы использовали в течение нескольких лет?

Update

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

Ответ 1

Много раз возникает небольшая задача, которая не является частью основного программного обеспечения, которое вы разрабатываете. Иногда задача одна, т.е. Сравнивать этот файл с базой данных и сообщать мне о различиях. Гораздо проще выполнять синтаксический анализ текста в Perl/Ruby/Python, чем в Java или С# (частично потому, что гораздо проще использовать регулярные выражения). Вероятно, потребуется намного меньше времени для разбора текстового файла с использованием Perl/Ruby/Python (или, может быть, даже vbscript cringe, а затем загрузить его в базу данных, чем для создания программы Java/С#, чтобы сделать это или сделать это рука.

Кроме того, из-за простоты, с которой большинство динамических языков анализирует текст, они отлично подходят для генерации кода. Уверенный, что ваш окончательный проект должен быть в С#/Java/Transact SQL, но вместо того, чтобы резать и вставлять 100 раз, находить ошибки и вырезать и вставлять еще 100 раз, часто (но не всегда) проще просто использовать генератор кода.

Недавний пример работы - нам нужно получить данные из одной системы бухгалтерского учета в нашу систему учета. Система имеет формат импорта, но старая система имеет совершенно другой формат (фиксированная ширина, хотя некоторые вещи должны быть сопоставлены). Задача состоит не в создании программы для переноса данных снова и снова. Он должен засунуть данные в нашу систему, а затем сохранить их там в будущем. Поэтому, хотя мы являемся магазином С# и SQL Server, я использовал Python для преобразования данных в формат, который может быть импортирован нашим приложением. В конечном счете, не имеет значения, что я использовал python, важно, чтобы данные находились в системе. Мой босс был очень впечатлен.

Где я часто вижу динамические языки, используемые для тестирования. Гораздо проще создать программу Python/Perl/Ruby для привязки к веб-службе и выбросить некоторые данные против нее, чем создавать эквивалентную Java-программу. Вы также можете использовать python для борьбы с программами командной строки, генерировать тонну мусорных (но все еще актуальных) тестовых данных и т.д. Довольно легко.

Другим преимуществом динамических языков является генерация кода. Создание кода С#/С++/Java. Ниже приведены некоторые примеры:

Первая задача генерации кода, которую я часто вижу, - это люди, использующие динамические языки для поддержания констант в системе. Вместо ручного кодирования пучка перечислений динамический язык может использоваться для довольно простого анализа текстового файла и создания кода Java/С# с перечислениями.

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

Всегда лучше покупать код генератора кода. Но даже если вы этого не сделаете, интересно ли тратить время на резку/вставку, или это более интересно создавать Perl/Python/Ruby script один раз, а затем генерировать код? Если вам потребуется несколько часов, чтобы скомпоновать код, но меньше времени для создания генератора кода, то даже если вы его используете, как только вы сохраните время и, следовательно, деньги. Если вам понадобится больше времени для создания генератора кода, чем требуется, чтобы передать код один раз, но вы знаете, что вам придется обновлять код более одного раза, это может иметь смысл. Если вам понадобится 2 часа, чтобы сделать код, 4 часа, чтобы сделать генератор, но вы знаете, что вам придется сдать эквивалентную команду еще 5 или 6 раз, чем, очевидно, лучше создать генератор.

Также с динамическими языками проще, чем Java/С#/C/С++. В частности, на ум приходят регулярные выражения. Если вы начинаете использовать регулярные выражения в Perl и реализуете их ценность, вы можете внезапно начать использовать библиотеку регулярных выражений Java, если вы этого не делали раньше. Если у вас есть, то может быть что-то еще.

Я оставлю вас с последним примером задачи, которая была бы великолепна для динамического языка. Мой помощник по работе должен был взять каталог с файлами и записать их на различные компакт-диски для разных клиентов. Было несколько клиентов, но было много файлов, и вы должны были посмотреть в них, чтобы посмотреть, что они собой представляют. Он выполнил эту задачу вручную... Программа Java/С# могла бы сэкономить время, но за один раз и со всеми накладными расходами на разработку это не стоит. Однако, похлопывая что-то вместе в Perl/Python/Ruby, возможно, стоило того. Он провел несколько часов. Для создания Python script потребовалось бы меньше одного, чтобы проверить каждый файл, совместить его с клиентом, а затем переместить файл в нужное место..... Опять же, это не часть стандартного задания. Но задача подошла как одна. Лучше сделать это сами, потратьте больше времени, чтобы заставить Java/С# выполнить задачу или потратить намного меньше времени на это в Python/Perl/Ruby. Если вы используете C или С++, точка еще более драматична из-за дополнительных проблем программирования на C или С++ (указатели, проверка границ массива и т.д.).

Ответ 2

Позвольте мне ответить на ваш вопрос, спросив, что это значит, чтобы американский английский говорящий выучил другой язык?

Языки, на которых мы говорим (и те, которые мы программируем), сообщают нам, как мы думаем. Это может произойти на фундаментальном уровне, например, С++ по сравнению с javascript по сравнению с lisp, или на уровне реализации, в котором конструкция ruby ​​обеспечивает момент эврики для решения в вашей "реальной работе".

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

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

Ответ 3

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

Ответ 4

Я в первую очередь программирую на Java и С#, но использую динамические языки (ruby/perl), чтобы поддерживать более плавное развертывание, запускать задачи ОС, автоматическую отчетность, некоторый анализ журналов и т.д.

После короткого изучения и экспериментирования с ruby ​​или perl вы должны иметь возможность писать некоторые регулярные выражения, обрабатывающие скрипты, которые могут изменять форматы данных или захватывать информацию из журналов. Примером небольшого ruby ​​/perl script, который можно было бы быстро написать, было бы script для синтаксического анализа очень большого файла журнала и отчета только о нескольких интересных событиях как в формате, читаемом человеком, так и в формате csv.

Кроме того, опыт работы с различными языками программирования должен помочь вам придумать новые способы решения проблем на более структурированных языках, таких как Java, С++ и С#.

Ответ 5

Одна из основных причин для изучения Perl или Ruby - помочь вам автоматизировать любые сложные задачи, которые вы должны выполнять снова и снова.

Или, если вам нужно проанализировать содержимое журнальных файлов, и вам нужно больше средств, чем доступно с помощью grep, sed и т.д.

Также, используя другие языки, например. Ruby, у которого не так много "стоимости установки", позволит вам быстро прототипировать идеи перед их внедрением в С++, Java и т.д.

НТН

веселит,

Rob

Ответ 6

Ожидаете ли вы работать в этой компании навсегда? Если вы когда-либо выходите на рынок труда, некоторые потенциальные работодатели будут знать о парадоксе Python.

Ответ 7

Когда я впервые узнал Python, я работал в магазине Java. Иногда мне приходилось выполнять серьезные задачи обработки текста, которые были намного проще делать с быстрыми скриптами Python, чем с Java-программами. Например, если мне пришлось проанализировать сложный файл CSV и выяснить, какая из его строк соответствует строкам в нашей базе данных Oracle, это было гораздо проще с Python, чем с Java.

Более того, я обнаружил, что обучение Python делает меня намного лучше Java-программистом; узнав многие из тех же понятий на другом языке, я чувствую, что понимаю эти концепции намного лучше. Что касается того, что делает Python проще Java, вы можете проверить этот вопрос: Java → Python?

Ответ 8

Хороший хоккеист играет там, где находится шайба. Отличный хоккеист играет там, где будет шайба. - Уэйн Гретцки

Наша индустрия всегда меняется. Никакой язык не может быть мейнстримом навсегда. Для меня Java, С++,.Net - это то, где сейчас находится шайба. И python, ruby, perl - это то, где будет шайба. Решите сами, хотите ли вы быть хорошими или прекрасными!

Ответ 9

Пол Грэм опубликовал статью несколько лет назад о том, почему программисты на Python создали лучших Java-программистов. (http://www.paulgraham.com/pypar.html)

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

Процитировать Paul site:

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

Это делает их именно такими программисты должны Наем. Следовательно, что из-за отсутствия лучшего имя, я назову парадокс Python: if компания решает написать программного обеспечения в сравнительно эзотерическом языка, они смогут нанять лучше программистов, потому что они привлекать только тех, кто узнать его. А для программистов парадокс еще более выражен: язык, чтобы узнать, если вы хотите получить хорошая работа, это язык, на котором люди не учитесь просто получать работу.

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

Ответ 10

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

Более десяти лет назад, когда я изучал способы работы с компьютером, Old Wise Men With Beards объяснили, как C и С++ являются инструментами отрасли. Никто не использовал Паскаля, и только безрассудство рискует своими компаниями с ассемблером.

И, конечно, никто даже не упоминает ужасную медленную уродливую вещь под названием Java. Это не будет инструментом для серьезного бизнеса.

Итак. Um. Замените языки в приведенной выше истории, и, возможно, вы можете предсказать будущее. Возможно, вы не можете. Дело в том, что Java не будет последним языком программирования, а также вы, скорее всего, переключите работодателей. Будущее взимает с вас 24 часа в сутки. Будьте готовы.

Изучение новых языков полезно для вас. Кроме того, в некоторых случаях это может дать вам права хвастовства в течение длительного времени. Мой первый университетский курс был в Схеме. Поэтому, когда люди говорят со мной о новом языке du jour, мой ответ - это нечто вроде "первоклассных функций? Это так прошлое столетие".

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

Ответ 11

Изучение нового языка - это долгосрочный процесс. Через пару дней вы узнаете основы, да. Но! Как вы, вероятно, знаете, реальная практическая применимость любого языка привязана к стандартной библиотеке и другим доступным компонентам. Изучение того, как эффективно использовать, требует много практического опыта.

Возможно, единственным непосредственным краткосрочным преимуществом является то, что разработчики научатся различать гвозди, которым нужен Python/Perl/Ruby -hammer. И, если они хороши, они могут затем изучить еще несколько (онлайн, возможно!) И стать настоящими экспертами.

Долгосрочные преимущества легче представить:

  • Сотрудник становится лучшим разработчиком. Лучший разработчик = > лучшее качество. В наши дни мы живем в экономике знаний. Это разумнее инвестировать в те мозги, которые уже работают на вас.

  • Легче адаптироваться, когда появится следующий большой язык. Весьма вероятно, что NBL будет иметь множество функций, присутствующих на современных языках сценариев: первоклассные функции, замыкания, потоки/генераторы и т.д.

  • Новые рыночные возможности и способность реагировать быстрее. Даже если вы не пишете Python, другие люди. Ваши клиенты? Другой поставщик в проекте? Возможно, критический компонент был написан на каком-то другом языке? Это будет стоить денег и времени, если у вас нет людей, которые могут понять код и интерфейс с ним.

  • Recruitment. Если ваша компания имеет репутацию преподавания новых и интересных вещей для людей, будет легче набирать лучших людей. Все делают Java/С#/С++. Это не очень эффективный способ дифференцировать себя на рынке труда.

Ответ 12

Навстречу обновленному вопросу, его проблема с курицей/яйцом. Лучший способ оправдать расходы - показать, как он снижает стоимость в другом месте, поэтому вам может потребоваться потратить дополнительное/личное время, чтобы сначала научиться чему-то создавать функциональный прототип.

Покажите вашему боссу демо, как "эй, я сделал это, и это сэкономит мне много времени (или, еще лучше, это много $$), представьте, могли ли все использовать это, сколько денег мы сэкономили"

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

Ответ 13

Я часто обнаружил, что изучение другого языка, особенно динамически типизированного языка, может научить вас вещам о других языках и сделать вас лучшим программистом. Изучение рубина, например, научит вас объектно-ориентированному программированию способами, на которых не работает Java, и наоборот. В целом, я считаю, что лучше быть хорошо округленным программистом, чем застрять на одном языке. Это делает вас более ценным для компаний/клиентов, в которых вы работаете.

Ответ 15

Я не уверен, что это то, что вы ищете, но мы пишем наше основное приложение с Java в небольшой компании, в которой я работаю, но использовали python для быстрого написания небольших скриптов. Программное обеспечение резервного копирования, временные скрипты для управления данными и выталкивания результатов. Мне просто кажется, что иногда приходится садиться с питоном и писать быстрый script, чем беспорядок с классами и т.д. В java.

Скрипты Temp, которые не собираются придерживаться, не требуют много времени на разработку, потраченные на них.

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

Ответ 16

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

Что касается задач, Python/Lua/Ruby/Perl отлично подходят для небольших простых задач, таких как поиск некоторых файлов и их переименование. Они также отлично работают в сочетании с инфраструктурой (например, Rails, Django, Lua для Windows) для быстрой разработки простых приложений. Hell, 37Signals основан на создании простых, но очень полезных приложений в Ruby on Rails.

Ответ 17

Они полезны для "быстрого взлома", который заключается в том, чтобы закрепить пробел на вашем основном языке для быстрого (и потенциально грязного) исправления быстрее, чем требуется для разработки на главном языке. Пример: простой script в perl, чтобы пройти через большой текстовый файл и заменить все экземпляры адреса электронной почты другим, тривиально с количеством времени, затраченного в 10-минутном диапазоне. Взломав консольное приложение вместе, чтобы сделать то же самое на вашем основном языке, потребуется несколько кратных.

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

Наконец, языки сценариев очень полезны в области расширения. Возьмем LUA в качестве примера. Вы можете подключить lua-интерпретатор к вашему приложению с очень небольшими накладными расходами, и теперь у вас есть способ создать богатые функциональные возможности сценариев, которые могут быть доступны для конечных пользователей или изменены и распределены быстро, не требуя перекомпоновки всего приложения. Это используется для большого эффекта во многих играх, особенно в World of Warcraft.

Ответ 18

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

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

Конечно, я мог бы все это сделать с помощью java или сценариев оболочки (у меня тоже есть некоторые из них), но кто хочет скомпилировать класс (убедитесь, что путь к классу установлен правильно и т.д.), когда вам просто нужно что-то быстрое и грязный. Знание языка сценариев может удалить 90% этих скучных/повторяющихся ручных задач.

Ответ 19

Изучение чего-то с помощью гибкой системы ООП, например, Lisp или Perl (см. Moose), позволит вам лучше расширять и понимать ваши мысли по разработке программного обеспечения. В идеале, каждый язык имеет какой-то уникальный грань (будь то CLOS или какой-либо другой метод), который усиливает, расширяет и развивает ваши способности в качестве программиста.

Ответ 20

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

Бывают случаи, когда отвертка или пара плоскогубцев делают сложную проблему тривиальной.

Никто не просит подрядчиков, плотников и т.д. "Зачем учиться использовать отвертку, если у меня уже есть молоток?". На самом деле хорошие подрядчики/плотники имеют множество инструментов и знают, как их использовать. Все программисты должны делать то же самое, учиться использовать новые инструменты и хорошо их использовать.

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

Ответ 21

Я думаю, что основные преимущества динамических языков можно свести до

  • Быстрое развитие
  • Клей

Короткое время цикла разработки кода-кода делает динамические языки идеальными для прототипов, инструментов и быстрых и грязных одноразовых скриптов. ИМХО, последние два могут оказать огромное влияние на производительность программиста. Меня поражает, как много людей тащится через вещи вручную, а не взбивает инструмент, чтобы сделать это за них. Я думаю, это потому, что в их панели инструментов нет чего-то вроде Perl.

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

Ответ 22

Учитывая растущий фокус на запуск динамических языков (da-vinci vm и т.д.) на JVM и растущее число динамических языков, которые на нем выполняются (JRuby, Grrovy, Jython) Я думаю, что усекания только увеличиваются. Некоторые из сценариев, которые я нашел действительно полезными,

  • Прототипирование - используйте RoR или Grails для создания быстрых прототипов с преимуществом возможности запуска его на стандартном сервере приложений и (возможно) повторного использования существующих сервисов и т.д.

    /li >
  • Тестирование - правильные юниты намного быстрее работают в динамических языках

  • Сценарии тестирования производительности/автоматизации. Некоторые из этих инструментов начинают позволять использовать стандартный динамический язык для выбора тестовых скриптов вместо патентованных языков script. Боковое преимущество может заключаться в возможности повторного использования некоторого кода unit test, который вы уже написали.

Ответ 23

Не говорите своему работодателю, что вы хотите изучить Ruby. Скажите ему, что вы хотите узнать о новейших технологиях веб-инфраструктуры. просто случается, что самыми горячими являются Django и Ruby on Rails.

Ответ 24

Я нашел больше, чем играю с Ruby, тем лучше я понимаю С#.

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

2) Сильная роль компилятора (или переводчика для некоторых языков) становится более заметной. Почему система типа Ruby отличается от системы .Net/С#? Какие проблемы решаются каждым из них? Вы обнаружите, что понимаете на более низком уровне конструкции компилятора и его влияние на язык

3) Переключение между Ruby и С# действительно помогло мне лучше понять Шаблоны проектирования. Я действительно предлагаю использовать общие шаблоны проектирования на языке, таком как С#, а затем на языке Ruby. Это часто помогало мне увидеть часть церемонии компиляции философии определенной модели.

4) Другое сообщество . С#, Java, Ruby, Python и т.д., У всех есть разные сообщества, которые могут помочь задействовать ваши способности. Это отличный способ вывести свой корабль на следующий уровень.

5) Наконец, но не в последнюю очередь потому, что новые языки забавны:)

Ответ 25

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

Для написания анализатора на Java потребовалось бы много накладных расходов, но в Ruby у меня было около 40 минут.

Ответ 26

Часто языки dynamc (особенно python и lua) встроены в программы, чтобы добавить больше функциональных возможностей, подобных плагинам, и потому что они являются языками высокого уровня, которые упрощают добавление определенного поведения, когда язык с низким/средним уровнем не требуется.

У Lua не хватает всех системных вызовов низкого уровня, потому что он был разработан для удобства использования, чтобы добавить функциональность в программу, а не как общий язык программирования.

Ответ 27

Вы также должны изучить возможность изучения функционального языка программирования, например Scala. Он обладает многими преимуществами Ruby, включая сжатый синтаксис и мощные функции, такие как закрытие. Но он компилируется в файлы классов Java и легко интегрируется в стек Java, что может сделать его намного проще для вашего работодателя.

Scala не динамически типизирован, но его функция "неявного преобразования" дает много, возможно, даже все преимущества динамического набора текста, сохраняя при этом многие преимущества статического ввода.

Ответ 28

Динамические языки фантастичны для прототипирования идей. Часто по соображениям производительности они не будут работать для постоянных решений или продуктов. Но с такими языками, как Python, которые позволяют вам встроить стандартные C/С++/Java внутри них или наоборот, вы можете ускорить выполнение действительно критических бит, но оставьте его склеенным с гибкостью динамического языка.

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

Ответ 29

Знание grep и ruby ​​позволило сузить проблему и проверить исправление для проблемы, содержащей тонны java-исключений на некоторых производственных серверах. Поскольку я бросил решение вместе в рубине, это было сделано (спроектировано, реализовано, проверено, запущено, исправлено, повторно запущено, расширено, проанализировано результаты) днем, а не через пару дней. Я мог бы решить ту же проблему, используя решение all-java или решение С#, но, скорее всего, это заняло бы меня дольше.

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

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

Ответ 30

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

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