Изучите язык сценариев помимо [закрытого] Python

9
задан meder omuraliev 15 July 2010 в 15:49
поделиться

11 ответов

Послушайте, в Python практически есть все, что вам нужно (на мой взгляд) для программирования приложений. Вы можете записать что угодно, от стека протоколов до YouTube , от медиаплееров до 3D-игр и графики , и вы получите отличную производительность.

Он занимает ту же нишу, что и некоторые из других упомянутых языков:

  • C , у вас есть доступ почти ко всем полезным библиотекам C / C ++. Единственная причина, по которой я решил написать что-то на C вместо Python, - это то, что мне нужно было повысить производительность. Даже в этом случае я бы, вероятно, сначала прототипировал его на Python; Когда ваше приложение написано на Python, гораздо проще пересмотреть свой дизайн.

  • Ruby , нет веских причин когда-либо использовать Ruby вместо Python.

  • Perl , он отлично подходит для некоторых типов задач, но если вы поклонник согласованных, удобочитаемых и разумных стилей программирования, вам не понравится 95% существующего кода Perl. Я не знаю, связано ли это с тем, что люди, которые программируют на Perl, обычно (по моему опыту) в первую очередь являются системными администраторами, а во вторую - программистами, или потому, что у Perl есть философия дизайна, которая допускает несколько различных способов достижения одного и того же эффекта.

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

  • Bash , какое удовольствие манипулировать вашей файловой системой с помощью комбинации для циклов и конвейеров. Программирование на Bash не дает вам большего, чем то, что вы уже можете сделать с помощью Python, но если вы являетесь пользователем * nix, вы ощутите значительный прирост своей повседневной продуктивности.

  • Javascript , возможность писать приложения на базе браузера - полезный навык и почти наверняка способ, которым большинство приложений будет реализовано в будущем. Среда Javascript / браузера должна получить в ближайшие несколько лет целый ряд возможностей, от обработки звука до графики OpenGL, а некоторые очень быстрые движки либо находятся в разработке, либо уже доступны (например, V8, который поддерживает браузер Chrome и компилирует Javascript в собственный байт-код.) Вы видели Quake2, перенесенный на WebGL ?

Мой ответ в основном сводится к следующему: во-первых, изучите полезные языки.

22
ответ дан 4 December 2019 в 05:56
поделиться

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

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

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

3
ответ дан 4 December 2019 в 05:56
поделиться

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

  • Awk
  • Tcl
  • Icon
  • Ksh
  • Lua

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

Если вы хотите проверить другой язык сценариев, я рекомендую Lua, потому что

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

  • Как и Tcl, он был разработан с самого начала, чтобы легко включать код C. Это средство работает очень хорошо и значительно расширяет круг проблем, для которых оно полезно (см. Adobe Lightroom, World of Warcraft, Garry's Mod, CHDK).

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

Если, однако, ваша цель состоит в том, чтобы выучить новый язык, чтобы расширить свой разум, изучите что-то еще, кроме языка сценариев. Например, изучите Haskell и подберите некоторые умопомрачительные идеи (многие украдены из тех же источников, из которые украл Гвидо), или изучите C и действительно поймите, что именно происходит на оборудовании.

5
ответ дан 4 December 2019 в 05:56
поделиться

Я вообще-то изучаю Scala после Python. Из "Программирование на Scala":

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

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

Если вас устраивает дисциплина динамической типизации, посмотрите на корни. Smalltalkof course. Попробуйте Squeak с Squeak by Example книгой-компаньоном или его open-source форк Pharo с Pharo by Example книгой для начала.

2
ответ дан 4 December 2019 в 05:56
поделиться

Я бы рекомендовал изучать Haskell и диалект Lisp, такой как Scheme или Common Lisp, Если вы освоите любой из этих языков, вы получите представление о том, как вещи делаются с помощью функциональной парадигмы, и это также поможет вашему Python.

Вот некоторые языки, классифицированные по парадигмам, которые я бы изучал:

Императивные/процедурные языки:

  • C

Языки функциональной парадигмы:

  • Haskell
  • Common Lisp/Scheme

Похожие объектно-ориентированные языки:

  • Ruby
  • ECMAScript

Другое:

  • Perl

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

6
ответ дан 4 December 2019 в 05:56
поделиться

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

Сколько людей выучили Python на достойном уровне, обнаружили, что язык перекликается с тем, как они хотят работать, а затем перешли на что-то другое, потому что язык или экосистема, или и то, и другое не поддерживает их потребности? Я бы сказал, вероятно, однозначный процент образованной базы пользователей, не удивлюсь, если он составит менее 5%.

Если у вас нет потенциальных клиентов, связанных с работой, которые связаны с другим языком, или если вам нужно двигаться в сторону по аналогичным причинам, я бы сказал, что вам, вероятно, лучше изучить что-то дополнительное к Python, а не подобное или эквивалентное. C ++ для низкоуровневых или вычислительно-ресурсоемких задач, CUDA, если ваша область может использовать его преимущества (med-viz, CGI и т. Д.), Независимо от типа сценариев и хаков, ориентированных на оболочку / системного администратора, где бы вы ни работали (bash, tcl, awk или что угодно) и так далее.

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

Если вы действительно хотите узнать что-то еще, чтобы немного раскрыть свой разум, и хотите придерживаться «скриптинга», то LUA какое-то время была для меня интересной игрушкой, в основном из-за невероятной производительности, которую вы можете выжать из относительно простого процесса интеграции, потому что это совсем другой набор треков по сравнению с Python. Это и тот факт, что плагины WoW должны были быть написаны на LUA;)

4
ответ дан 4 December 2019 в 05:56
поделиться

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

1
ответ дан 4 December 2019 в 05:56
поделиться

Ruby/Groovy/Perl, если вы хотите придерживаться традиционной практики написания сценариев.

В противном случае я бы от души рекомендовал вам Clojure и Scala - два самых инновационных языка программирования последних нескольких лет.

1
ответ дан 4 December 2019 в 05:56
поделиться
  • Ruby - то, что он позволяет и делает с блоками, действительно интересно, и довольно чуждо программированию на python

  • Erlang - функциональный язык имеет много интересных примеров, и это определенно заставит вашу голову работать по-другому (в хорошем смысле)

  • Javascript - да, я серьезно. Несмотря на то, что в этом языке-прототипе довольно много трудностей, он делает некоторые действительно интересные вещи с этим прототипом и лишь немного отличается от Ruby и/или Python. И тонна людей вкладывает большие деньги в то, чтобы сделать Javascript выдающимся быстрым языком сценариев.

6
ответ дан 4 December 2019 в 05:56
поделиться

Я дам честный ответ с моей точки зрения.

Нет.

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

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

Update0

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

3
ответ дан 4 December 2019 в 05:56
поделиться

Изучите Лисп. Независимо от того, «скриптинг» это или нет, Эрик Раймонд имел на это право, когда написал:

«Lisp стоит изучить для глубокое просветление испытает вас будет, когда вы его наконец получите; этот опыт сделает вас лучше программист до конца своих дней, даже если вы никогда не используете Lisp

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

И внутри Lisps , мой выбор? Clojure ; как и другие Lisp, его макросистема дает вам возможности, сравнимые (фактически превосходящие) с превосходным метапрограммированием в Python, но Clojure, в частности, делает упор на практичность с включенными батареями (и интеллектуальную , самоуверенный дизайн), который будет знаком любому, кто увлекается инстинктами GvR. Более того, сильные стороны Clojure сильно отличаются от сильных сторон Python - в частности, он проявляет себя в многопоточном параллельном программировании с привязкой к процессору, что является одной из слабых сторон Python. так что наличие и того, и другого в вашем наборе инструментов увеличивает шансы, что у вас будет правильный инструмент, когда появится сложная работа.

(Это скрипты? На мой взгляд, это довольно академично в наши дни; если у вас есть REPL, где вы можете печатать код и немедленно ответа, изменить состояние запущенной программы или поэкспериментировать с API, я считаю, что язык достаточно "скриптовый").

2
ответ дан 4 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: