Perl против python

Каверзные вопросы

NBC / pandawhale.com

Почему я должен нанять именно вас?

— Ответ: Как мы уже говорили, скорее всего, ваша компания будет работать лучше, если полностью переделать веб-сайт. Для первого сайта он вполне неплох… Он предоставляет всю необходимую информацию, которую ваши клиенты должны знать о вашем бизнесе.

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

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

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

 Fox

Люди сделают то, что нужно вам!

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

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

Система под названием «Люди сделают так, как за хотите вы» позволяет осуществлять планомерный подход к проблемам:

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

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

ОБНОВЛЕНИЕ через 7 лет (март 2019 г.)

Хотя основная часть моего ответа не изменилась, я хотел бы отметить это.

Bash также является мощным языком сценариев. Для обработки текста это был абсолютно законный выбор.

Пожалуйста, прочтите комментарии mkaito ниже. Все они полностью верны.

  • Подмножество сценариев Bash столь же универсально, как и любой язык сценариев общего назначения. Добавьте в этот микс общие программы, такие как sed, и вы получите 90% всех ваших потребностей в написании сценариев.
  • 1 bash — это командный процессор, поэтому его сила заключается в том, чтобы запускать другие команды и программы unix в своих сценариях. Как вы упомянули sed и т. Д. Он спрашивает, когда выбрать определенный язык
  • 1 Оболочка — это действительно прославленная программа запуска программ, но возможности ее создания сценариев выходят далеко за рамки этого. Я предлагаю вам изучить реальные сценарии оболочки.
  • Я могу спать на полу, но предпочитаю спать на кровати. Невозможно сравнивать языки, у них разные цели.
  • 2 Ну, если Bash — это пол, то что-то вроде Haskell должно быть доской :-)

Скрипты оболочки, такие как bash, ksh, zsh, sh и fish, общеизвестно удивительны по сравнению с языками общего назначения высокого уровня, такими как Ruby, Python или Perl. Хотя сценарий оболочки может начать свою жизнь как более короткий файл, чем эквивалентный сценарий общего назначения, неожиданности приводят к появлению большого количества защитного кода оболочки, такого как для включения строгих режимов.

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

Крайне необъективная статья.

Я не считаю bash настолько сложным для отладки. Python часто бывает слишком жестким, тогда как bash позволяет проявить творческий подход. Если вы хорошо мыслите нестандартно, вам понравится bash.

Я запускаю сценарии bash для миллионов операций секвенирования ДНК в тысячах файлов, и мне это очень помогает. И вопреки тому, что все говорят, одни и те же версии скриптов на C ++ на самом деле не работают намного быстрее (их разделяет несколько минут).

Я думаю, что bash, как и perl, не самый удобный / простой для чтения. Это отпугивает людей, потому что большинство людей не являются великими абстрактными мыслителями. Но более умные и креативные программисты, как правило, любят это и часто используют. Если вы знаете себя и знаете, что у вас есть мозг, не пугайтесь bash. Если вы базовый мыслитель, возможно, придерживаетесь чего-нибудь вроде Python. Каждому свое.

Из «Книги лам»

Рэндал Л. Шварц, Том Феникс и Брайан Д Фой, Изучение Perl (Севастополь, Калифорния: O’Reilly, 2011), гл. 1.2 «Что означает Perl?», §§ «Почему Ларри [создатель Perl] не использовал какой-то другой язык?», Стр. 5:

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

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

Но если вы разделите код на самые короткие функции, и называть вещи простым и понятным языком, это самый ясный язык, который вы можете найти. Потому что это очень лаконично.

В качестве образца это мой последний код на Bash

Обратите внимание, насколько это легко понять и напечатать:

Пример 3.

1. Определение проблемы.
При установке наших деталей (сита с ячейками 50мм*16мм) у клиента упала производительность в 1,5 раза.
2. Изучение ситуации.
Клиент проверил размеры ячеек, площадь проходного сечения оказалась меньше, чем указанно на чертеже, в 1,5 раза. Т.е. размеры не соответствуют чертежам.
3. Выяснение причин.
Такие детали изготавливали неоднократно (сырье Х), однако в данном случае произошла замена сырья Х на сырье У. Не было технологии на резку сита из сырья У. Перед отгрузкой детали не контролировались. На чертеже клиента указаны требования, которые мы не способны были выполнить технологически.
4. Воздействие на причины.
Размер ячеек в данных ситах критически важен.
Согласован чертеж, устраивающий клиента.
Была разработана технология резки сит, подобраны режимы, позволяющие резать с требуемым качеством сырье У.
Введен 100% контроль ячеек при плазменной резке оператором.
5. Проверка результатов.
После проведения корректирующих действий подобных несоответствий больше не повторялось. Прошло больше года, заказы повторяются ежемесячно.
6. Закрепление изменений.
Разработан стандарт оформления чертежей сита данной конфигурации, внесены изменения в технологический процесс, описана технология резки указанной номенклатуры на разном сырье.
Введено правило обязательного согласования с клиентом чертежей, а также любых изменений чертежей и материала (сырья), с подписью клиента.
7. Извлечение уроков.
Любая замена материала (сырья) должна анализироваться на предмет последствий замены (возможно, нужно адаптировать технологию; перед тем, как делать партию, необходимо изготавливать пробники).

Как комплексный подход помогает решать проблемы

Мы живем в VUCA-мире — мире ускоряющихся изменений, в котором компании и целые отрасли трансформируются быстрее, чем раньше. Например, CEO General Motors Мэри Барра считает, что автомобильная индустрия изменится сильнее в последующие пять-десять лет, чем за предыдущие 50 лет. Такой мир становится стрессовым фоном для всех людей и выводит на первый план личностные особенности, которые либо помогают, либо мешают решать сложные проблемы. 

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

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

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

Именно поэтому при исследовании РППР нам требуется комплексный подход, который не ограничен лишь когнитивным аспектом — что человек способен делать, а включает в себя оценку личностных характеристик — к чему человек склонен и поведенческий аспект — что человек умеет делать на практике.

Дополнительные материалы

  1. О цикле DMAIC: Ватсон Г. Методология «Шесть сигм» для лидеров. М., 2006. Шесть сигм. Краткое руководство желтых поясов.
  2. Е. Ксенчук. Nemawashi: несколько слов о японской культуре принятия решений.Статья для Leaninfo.ru, Статья для LeanZone.ru
  3. Люк Де Брабандер, Алан Ини. Думай в других форматах.
  4. Сергей Литти. А3 мышление. (Первые две минуты можно пропустить).
  5. Питер Гелдерлоос. Консенсус: принятие решений в свободном обществе.
  6. Морган Джонс. Решение проблем по методикам спецслужб. 14 мощных инструментов.
  7. Траблшутинг Сергея Фаера. (Там он произносит аббревиатуру ИКР. Это Идеальный Конечный Результат — одно из центральных понятий в Теории решения изобретательских задач, ТРИЗ).

Подход к реализации

Python

Язык Python реализует очень простой подход к программированию, его главная цель — сделать все простым и очевидным для программиста. В Python есть только один способ сделать что-то лучше всего. Эта философия привела к реализации языка со строгой разметкой. Философия Python состоит из трех основных принципов:

  • Явное лучше, чем неявное;
  • Простое лучше, чем комплексное;
  • Комплексное лучше, чем сложное.

Благодаря этим принципам программы на Python очень легко читать и понимать, а также язык очень прост в освоении, поэтому, его можно считать лучшим выбором для начинающих. Его синтаксис очень прост, а структура кода заложена в форматирование, поэтому разработчик точно может сказать что и где происходит. Философия Python становится очевидной во многих аспектах языка. Например, использование пробелов для обозначения структуры блоков — это один из ярких примеров такой философии.

Ruby

В отличие от Python, Ruby использует блоки, это высший класс объектов, который рассматривается как единое целое в рамках одной программы. Ruby реализует концепцию ООП на максимум. Все с чем вы будете иметь дело в программе — это объекты, даже глобальные переменные. Классы и модули сами по себе являются объектами, у которых есть свои функции и операторы. Это делает возможности Ruby очень широкими, особенно вместе с такими преимуществами, как функциональное программирование и лямбда функции.

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

Объектно-ориентированное программирование

Классы (Python) Python — изначально объектно-ориентированный язык, в Perl классы — достаточно искусственное образование.

Вот объявление двух классов (базовый и производный), конструирование объекта и вызов метода:

Perl

Python

Как видно, синтаксис Python намного естественней и компактней во всём: и в объявлении классов, и при организации наследования, и при доступе к данным и методам объекта.

Причём в Perl разные классы традиционно разносят в разные файлы, что затрудняет чтение программы, да и производительности не способствует.

Перегрузка операторов (Python)

Перегрузка операторов в Perl возможна, но является очень ограниченной и искусственной надстройкой. В Python это одно из базовых свойств языка. Больше того, в Python можно переопределить и поведение объекта так, чтобы он эмитировал базовые типы (в Perl для этого есть tie-механизм, но он намного слабее). Вот пример итератора на Python:

Объект класса Pow(N), при переборе в цикле, ведёт себя так, как будто-то это массив степеней двойки, не превосходящих N

Обратите внимание на то, что сам массив при этом не создаётся (что экономит память), его элементы вычисляются «на лету» (если цикл будет прерван, то лишние вычисления выполняться не будут)

Кроме того, объект поддерживает операцию сложения с числом.

Первый цикл этой программы распечатает степени двойки, не превосходящие 300 (2, 4, 8, 16, …, 256), второй цикл — не превосходящие 1000.

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

Это упрощённый пример, внимательный читатель наверно заметил, что объект допускает лишь однократное использование. Для получения полной функциональности, следует создать класс итератора. В него выносится метод next, а метод __iter__ должен возвращать не self, а объект класса итератор. Исключения (Python)

В Python имеется полноценный механизм обработки исключений, встроенный в язык.

В Perl исключения можно эмулировать, при помощи таких модулей, как Error.pm и Exception.pm, не входящих в стандартную поставку Perl. Они основаны на умелом использовании eval/die, но это весьма искусственный приём, который никак не может обеспечить той гибкости, которую даёт Python.

В Python исключения являются классами, обработка исключений ведётся с учётом структуры этих классов, что позволяет отслеживать целые группы исключений. Кроме того, на каждый класс исключений можно сделать свой обработчик. Создание объектов (Python)

В Python конструктор всегда создаёт объект, что весьма логично. Если возникла ошибка, то Perl, традиционно, возвращает undef, Python же генерирует exception.

Пример обработки ошибки при создании объекта:Perl

Python

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

Кроме того, если вы не позаботитесь об обработке ошибки в Perl, то программа продолжит «работать», что затрудняет диагностику реальных причин ошибок. В Python, не обработанное вами исключение будет обработано самим интерпретатором (естественно, исполнение программы будет прервано).

Опыт работы и образование

buzzfeed.com

Почему вы не закончили университет?

— Ответ: Я должен был определиться с будущей специальностью, когда мне было всего 18. В школе мне одинаково нравились все уроки гуманитарного профиля, и я не мог решить, чему отдать приоритет.

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

 Wikipedia

Тогда я поехал домой и поговорил с родителями насчет моей проблемы. Мама предложила взять академический отпуск, чтобы я мог найти себя. В итоге я попал в очень талантливую группу режиссеров-документалистов. Первый документальный фильм, над которым я работал, был представлен на кинофестивале «Сандэнс». Захваченный волнением и очарованием мира документального кино, я так и не вернулся к учебе.

Как вы думаете, почему вы подходите для этой работы? Кажется, у вас даже нет опыта.

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

Disney / fuckyeahhilaryduff.tumblr.com

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

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

Ваша основная специальность – философия. Как это помогло вам в вашей карьере?

— Ответ: Нельзя сказать, что философия подготовила меня к карьере архитектора. Но она заставила меня задуматься о личных приоритетах и перспективах. После двух лет попыток выяснить, что делать со своей жизнью, я наконец определился, когда на выходных съездил в город N. Я был совершенно очарован архитектурой, которая меня окружала.

Я приехал домой, изучил архитектурные академии по всей стране и был принят в одну из лучших. И я не жалею о сделанном выборе – это работа моей мечты.  

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

Pixar / seatheworldpositively.wordpress.com

Вы часто меняли место работы. Почему я должен позволять вам экспериментировать за мой счет?

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

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

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

В своей книге «301 умный ответ на сложные вопросы на собеседовании» («301 Smart Answers to Tough Interview Questions») Вики Оливер отмечает, что для того, чтобы выйти из разговора с работодателем победителем, нужно «уничтожить» конкурентов». А Шана Лебовиц, обозреватель Business Insider, советует говорить размеренно и противостоять желанию опускать руки. Это несколько ключевых моментов, которые эксперты рекомендуют учитывать в процессе ответа на вопросы.

Ниже вы найдете 30 сложных вопросов, которые могут встретиться вам на собеседовании, и варианты достойных ответов из вышеупомянутой книги Вики Оливер.

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

Помните, что самое главное на собеседовании – честность.

Предисловие Планируйте успех, или — никогда не лягайтесь с кенгуру!

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

В подобных ситуациях своей цели вам придется добиться уже в противоборстве с другими. И ваш оппонент не сдастся немедленно без борьбы — иначе он или она не были бы оппонентами!

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

Инициатива должна принадлежать вам, во всяком случае, в расчете будущих ходов вы должны опережать соперника. Не спешите, выбирайте наилучшие время, место, образ действия — имеется в виду, для вас наилучшие!

В заглавии предисловия — утверждение, в котором вряд ли кто-нибудь усомнится: «Никогда не лягайтесь с кенгуру!» У кенгуру это получится гораздо лучше; всту пать с кенгуру в соревнование — кто кого сильнее пнет — дело «дохлое»: достанется вам! Это вовсе не означает, что надо избегать конфликтов — будьте лишь разборчивей в выборе средств. Выбирайте, планируйте, будьте предусмотрительны, и вы вступите в противоборство в благоприятных условиях, не ввяжетесь в матч по кикбоксингу с кенгуру!

Что происходит, когда по вашей вине складывается невыигрышная ситуация

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

И я сказал им: «У нас демократия, но не забывайте: здесь я — король!» Неплохо сказано, подумалось мне. Последовавшее за тем молчание убедило меня, что я попал в точку и овладел ситуацией. И тут один маль чишка медленно поднял руку и спросил, очень почтите льно: «Можно кое-что уточнить?»

Как научиться решать проблемы

Чтобы решать проблемы с большей удовлетворенностью от результата, нужно выйти за пределы когнитивного аспекта. Доктор Роберт Хоган предлагает учитывать наши реакции на плохие решения, собирать обратную связь, быть открытым для дальнейшего развития и восприимчивым к коучингу (coachability).

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

Процесс решения сложных проблем

Решение сложных проблем — это работа с неопределенностью без единственно правильного ответа. Чтобы развить навык, необходимо практиковаться, разделять этапы решения проблем и задавать правильные вопросы.

Четкое разделение этапов решения проблемы поможет сфокусироваться на главном, сэкономить энергию и ресурсы и управлять решением проблемы как проектом.

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

Сложная ситуация

  1. Что именно я знаю о ситуации наверняка?
  2. Какие я могу сделать предположения?
  3. Какими данными я могу пренебречь?

Решение правильной проблемы

  1. Это точно проблема? Где мы проведем границу между особенностями ситуации (человека, продукта или организации) и тем, что мы будем считать проблемой?
  2. Какому приоритету она противоречит?
  3. На кого, на что, и как влияет эта проблема?

Правильное решение проблемы

  1. Достаточно ли альтернатив мы рассмотрели?
  2. Что будет минимально необходимым решением, что неприемлемым, а что — сверх-задачей?
  3. Что для нас будет образом хорошего результата?

Реакция на неправильное решение

  1. Не воспринимаю ли я обратную связь на свое решение «в штыки»? Как я отреагировал на нее?
  2. Каким был мой вклад в неправильное решение?
  3. Какую часть обратной связи я считаю полезной для будущих действий?

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

Небольшой совет

Вы Ruby-разработчик и думаете о том, чтобы начать работать с Python? Попробуйте! Он в определённой степени похож на Ruby, так что весьма скоро вы почувствуете себя в своей тарелке. Однако, в то же время он и достаточно отличается, поэтому придётся научиться новым методам, которые помогут не только в Python-разработке, но и в работе с другими языками. Сегодня многим разработчикам недостаточно знать один ЯП. Тем более, что в открытом доступе есть огромное количество ресурсов, которые позволяют нам обучаться самостоятельно. 

Перевод статьи Benoit: Why and How I Switched from Ruby to Python

История из жизни #2

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

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

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

Часто бывает, что неопытный сотрудник, задавая самые разные (порой «глупые») вопросы, наводит команду на решение проблемы.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: