Как вы используете язык сценариев (PHP, Python и т.д.), Чтобы повысить производительность?

Я разработчик Delphi на платформе Windows, недавно прочитал учебник PHP в W3CSchools, он выглядит интересным.

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

Что вы обычно делаете с языками сценариев, помимо разработки программного обеспечения? И нам нужен отзывчивый, достойный IDE/редактор, чтобы повысить производительность при написании сценариев для этой цели?

Ответ 1

Я расскажу вам, как я улучшил свою производительность с помощью Python в Windows. Я просто пытаюсь написать все в Python - каждое приложение, в котором я нуждаюсь, если только не знаю, что оно не будет масштабироваться, и мне понадобятся более эффективные инструменты (в этом случае я лично использую С++, но вы также можете использовать С#/Delphi).

Оказывается, что для большинства ( > 95%) необходимых инструментов и утилит Python (в сочетании с PyQt для GUI) достаточно хорош, и для меня это гораздо более продуктивный язык, чем С++. Ключом является остановка мышления Python как "языка сценариев". Это не менее язык программирования, чем С++/Java/С#/Delphi/то, что вы говорите. У этого есть свои сильные стороны, и у него есть свои ограничения. Если вы знаете о них и знаете, как выбрать подходящий инструмент для работы, вы будете прекрасно себя чувствовать.

Вам не нужна специальная среда IDE. Я использую Scite для всего моего кодирования Python (кстати, в Windows и Linux), и он отлично работает.

Ответ 2

  • Вы можете ОПРЕДЕЛЕННО помочь себе, автоматизируя множество задач с помощью языков сценариев.

    Обратите внимание: некоторые из этих "скриптовых" языков, таких как Perl - , на самом деле являются очень мощными языками разработки программного обеспечения общего назначения, которые просто обозначаются как "скриптинг" , поскольку их начальная ниша и/или происхождение был сценарием (и потому, что с ними легко создавать простые скрипты).

    Лично я использую Perl для автоматизации быстрых сценариев (2% использования), веб-разработки (8% использования) и развития финансового программного обеспечения предприятия (оставшиеся 90%).

  • Что касается примеров того, что вы можете сделать - ответ "почти что-то" и во многом зависит от того, какова ваша типичная работа, которая нуждается в автоматизации. Я использую Perl для файлов, связанных с файловой системой (организация файлов/очистка/переименование), чтобы манипулировать содержимым содержимого (начало Perl и один из самых сильных наборов, все еще являющийся текстовой обработкой) и различные отчеты ( "R" в Perl означает "отчетность" ) и для сортировки данных, что слишком сложно сделать быстро в Excel.

    Обратите внимание, что Perl имеет чрезвычайно широкий набор библиотек (называемых модулями), доступных через CPAN, которые можно использовать для выполнения всего, что угодно, кроме поджаривания хлеба или путешествия во времени; а также многочисленные рамки для серьезной разработки программного обеспечения.

    Чтобы отразить ответ Python, Perl также может использоваться для работы с графическим интерфейсом в Windows - я не буду здесь останавливаться, так как у SO есть очень подробные обсуждения по этой теме, если вы решите пойти с Perl.

  • В качестве очень конкретного примера, иллюстрирующего выше, последние 2 проекта, которые я сделал для себя, были системами индексирования, которые индексировали имена файлов, метаданные и содержимое и обеспечивали способ поиска индекс. Первым из них был поиск локального кода (версия для Google Google Search Search), вторая - система управления файловыми коллекциями для моих mp3 файлов (я дважды собака смею с любым существующим программным обеспечением, чтобы позволить мне случайный поиск регулярных выражений по тегу ключевые слова). Оба использовали SQLite back-end и Perl для индексирования и front-end. Вторым конкретным примером был 2-лайнер, подсчитывающий количество голосов, которые у меня были для определенного тега в StackOverflow:)

  • Вы получите большую пользу от хорошей среды разработки или просто редактора программ для ЛЮБОГО программирования, включая скрипты. В Windows вы можете использовать Notepad ++ или UltraEdit или еще много - SO должен иметь список где-то. Любой редактор с "intellisense" (интеллектуальное завершение работы) получает преимущество.

Ответ 3

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

  • Центральными данными являются ассоциативный массив (изменяемая хеш-таблица). Реализация Lua чрезвычайно эффективна и служит хорошо, как хэш, таблица, множество и список.

  • Обработка строк сидит в отличном сладком месте: почти такая же мощная, как регулярные выражения, и гораздо более читаемая. Символ escape-последовательности шаблона % отличается от escape-строки char \. Lua "pattern with capture" проще, чем регулярные выражения POSIX, и намного проще, чем регулярные выражения Perl, и он удовлетворяет 90% потребностей в строчном сканировании. Превосходный пример инженерного дизайна.

Эти две функции охватывают основные данные. Кроме того,

  • Таблица является единственным изменчивым типом, что упрощает прохождение программ.

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

  • Lua имеет встроенную конструкцию итераций, родную для языка, которая подходит для итерации над коллекциями, файловыми системами, которые вы называете. Намного лучше, чем иметь некоторый "объект итератора" с "методами итератора". Итерация достаточно важна, так что я получаю большую выгоду от того, что для нее была построена языковая конструкция (общий цикл for).

  • Язык достаточно прост, что после скромного изучения я все понимаю.

  • Существует быстрая интерактивная реализация.

  • При необходимости я могу импортировать любую существующую библиотеку C в Lua.

  • Стандартные библиотеки Lua удовлетворяют большинство моих потребностей, оставаясь достаточно маленькими, чтобы быть понятными. Если мне нужна библиотека специального назначения (XML, HTTP, синтаксический анализ), она, как правило, уже доступна и достаточно проста для понимания.

  • Снова при необходимости я могу легко расширить свои собственные типы данных.

Я нахожу, что я использую Lua для всех задач, которые я использовал для выполнения sh, awk, sed, perl и этой толпы. Я также обнаружил, что 90% времени я могу написать простую, полезную программу Lua намного быстрее, чем простая, полезная программа C. (Остальные 10% - это когда я в основном делаю системные вызовы.)

Хотя я потерял подсчет количества языков, которые мне хорошо известны (более 10 000 строк кода написаны), в наши дни почти все мои потребности удовлетворяются только 3:

  • Lua для почти всех легких программ, в том числе для быстрой и грязной обработки строк/файлов, которые вы упоминаете

  • C для обучения (потому что я должен учить C)

  • Haskell для прототипирования (и иногда реализации) сложных или больших систем, особенно компиляторов

Я также использовал сочетание Lua и C для некоторых довольно существенных приложений, таких как nbibtex и noweb 3.

Ответ 4

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

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

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

Некоторые ключевые слова подсказки для вас: shell-скрипты, регулярные выражения, форматирование вывода.

Спасибо

Ответ 5

Итак, вы, вероятно, уже получили изображение, вы будете выполнять определенные задачи быстрее с использованием языка сценариев (и в отношении скриптов слов: я просто больше не считаю это уничижительным, совсем наоборот). Черт, у меня есть друзья (случайно программисты только на Delphi), которые все еще используют Delphi для выполнения некоторых одноразовых задач, поиска в текстовых файлах и т.д., Тратят часы на записи классов и форм Delphi, компилируя снова и снова, вместо того, чтобы писать пару минут Python/Ruby/Perl с одним слоем.

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

Кстати, когда я говорю "учитывая правильный выбор", я настоятельно рекомендую выбрать правильно разработанный язык с мощными концепциями функционального программирования. Поэтому я действительно пропустил PHP и перешел на Python или Ruby.

Ответ 6

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

Когда дело доходит до скуки, я настоятельно рекомендую BASH. Вы можете получить его в Windows, установив Cygwin. Например, я часто нахожу, что занимаюсь такими вещами, как следующие для разных курсов:

for i in {1..10} ; do
    ./process_data input-$i.txt | tee result-$i.transcript
done

Вам не нужен хороший редактор... любой текстовый редактор будет отлично работать. Тем не менее, если вы ищете хороший редактор Python, Eclipse с PyDev довольно хорош. Лично я просто использую Xcode в качестве редактора кода общего назначения для всего... хотя он ничего не приносит в таблицу для сценариев оболочки Python или BASH... конечно, у вас нет Xcode on Окна. Однако вы можете использовать Notepad ++, Notepad или Wordpad.

Ответ 7

В качестве пользователя 50/50 windows/linux python особенно полезен, поскольку почти все, что я пишу, является кросс-платформенным, а также потому, что на окнах действительно нет очень полезного языка оболочки. С pyqt я могу создать довольно впечатляющий графический интерфейс всего за несколько часов. Я уверен, что в ближайшие несколько лет питон возьмет на себя мир.

Ответ 8

Я TextMate пользователь и активно разрабатывает расширения ( "пакеты" ) для моего собственного использования в php, ruby ​​и javascript.

Ответ 9

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

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

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

Я перехожу с одного языка сценариев на другой, иногда смешиваю их, чтобы получить то, что я хочу сделать быстрее. Меня бесстрашно зная, что вы можете делать все, что можете подумать. Если вы не можете, тогда всегда есть stackoverflow и больше языков (тег language-agnostic), которые вы можете принять для решения быстрее (и, лучше, обычно), вы получите его.

Ответ 10

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

  • PHP

    • XSLT - генерация отчетов XML
    • imagemagick - оптимизация изображения
    • curl - интеграционное тестирование
    • intl - интернационализация
  • Python

    • черепаха - ностальгия
    • plistlib - Конфигурация OSX
    • sqlite - быстрое прототипирование базы данных
    • sched - быстрое планирование задач
    • difflib - diffing
    • shutil - архивирование файлов
  • Ruby

    • Rake - автоматизация резервных копий и журналов
    • ожидать - автоматическое приглашение аутентификации
    • abbrev - автозаполнение
    • RSS - создание каналов
    • fileutils - сравнение файлов
    • gdbm - сериализация состояния программы
    • win32ole - автоматизация MSXML/IE
    • did_you_mean - Избегайте опечаток
  • Perl

    • Env - проблемы с устранением проблем
    • Memoize - алгоритмы тестирования
    • TAP - организация тестов
    • Params:: Check-validating APIs

Ссылки