Подсказки и прерывания в изучении XSLT и “реального” функционального программирования?

До недавнего времени мое знание XSLT было достаточно для моих простых, простых потребностей. Но более усовершенствованное требование отправило меня для ссылки на материал, когда "просто пробующий материал" не работал. Это была на самом деле забава, запускающаяся законченный вначале. Я первоначально узнал, что XSLT посреди давления крайнего срока и в 20/20 непредусмотрительности "работа" был ясно более важным, чем "понимание".

Я был удивлен читать на странице 33 книги Michael Kay, что XSLT имеет свои корни в Схеме. Википедия говорит,

Схема является одним из двух основных диалектов языка программирования Lisp.

Возможно, я знаю (или будет скоро знать), больше о функциональном программировании, чем я думал, что сделал. Поиску ТАК сообщений нравится действительно ли XSLT, язык функционального программирования? и после его рабочих ссылок показывают, что существует несколько мнений, является ли XSTL функциональным языком. Из сообщения, Какой язык функционального программирования я должен выбрать в качестве первого языка функционального программирования? Я получил совет изучить F# сначала, потому что я происхожу из.NET, и мне нравится добираться до полезных программ быстро.

Мой первый вопрос, если кто-то знает XSLT 2.0 очень хорошо, сколько из "реального" языка функционального программирования, такого как F#, Lisp или Haskell человек уже знает прежде, чем изучить F#, Lisp или Haskell? Поскольку цели обсуждения принимают человека, который "Знает, что XSLT 2.0 очень хорошо" изучает очень немного новых понятий в первый раз, когда она читает Поваренную книгу XSLT. Вместо этого ее реакция на незнакомую информацию, "Конечно, это - хороший способ сделать это. Я должен был думать об этом!"

Второй вопрос, там части XSLT 2.0 / XPATH 2.0, я должен удостовериться, что понимаю очень хорошо для создания изучения F# / Lisp / Haskell легче?

В-третьих, есть ли части XSLT, которые лучше всего проигнорированы, если Вы планируете в конечном счете изучить F# / Lisp / Haskell / и т.д.? Таким образом, XSLT имеет понятия аналогичными GOTO, ИЗМЕНЯЕТСЯ и НА ОШИБОЧНОМ РЕЗЮМЕ NEXT, которые не являются соответствующими на "реальных" языках функционального программирования?

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

P.S. Несколько гиперссылок удалены из-за отсутствия репутации. Черт бы побрал!;-)

25
задан ROMANIA_engineer 1 December 2017 в 14:37
поделиться

4 ответа

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

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

  • Функциональные программисты очень заботятся о синтаксисе. Программисты XSLT вынуждены использовать синтаксис XML. Поэтому между этими двумя сообществами существует большая разница в нормах и ценностях.

  • Типичный функциональный язык не только функционален, но и имеет нечто особенное, о чем он заботится, что придает языку свой неповторимый колорит. Некоторые примеры (в алфавитном порядке):

    • Erlang много заботится о надежности и параллельных/распределенных вычислениях.
    • F# заботится о том, чтобы хорошо взаимодействовать с фреймворком .NET и системой типов.
    • Haskell заботится о чистоте, о сексуальных типах и об одной концепции красивого синтаксиса
    • Scheme заботится о расширяемости и о совершенно другой концепции красивого синтаксиса.
    • XSLT заботится о сопоставлении шаблонов и обработке XML.

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

4
ответ дан 28 November 2019 в 21:58
поделиться

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

Я полагаю, что вы обнаружите тот же эффект в обратном направлении.

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

2
ответ дан 28 November 2019 в 21:58
поделиться

Я немного поигрался с XSLT и углубился в функциональные языки Lisp, Scheme и Haskell. Судя по тому немногому, что я видел, я не уверен, что XSLT, как он обычно используется, научит вас многому о функциональных языках. Вы можете изучить несколько приемов, но, на мой взгляд, JavaScript - лучший аналог того, что вы увидите в нетипизированных функциональных языках.

Википедия поддерживает меня в этом:

Как язык, XSLT находится под влиянием функциональных языков и языков сопоставления текстовых шаблонов {{1} } как СНОБОЛ и awk. Его непосредственным предшественником был ISO DSSSL, язык , который выполнял ту же функцию для полного SGML, что и XSLT для XML. Многие из комитетов по стандартам, которые разработал XSLT, ранее работал над DSSSL, включая Джеймса Кларка. XSLT также можно рассматривать как полный по Тьюрингу шаблонный процессор.

Другими словами, он многое заимствует из функциональных языков, но также и из языков шаблонов, таких как awk и SGML. Так что да, это функциональный язык, в том же не совсем очевидном смысле, что шаблоны C ++ являются функциональным языком . Но нет легко отображаемой линии от изучения XSLT до Scheme или Haskell.

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

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

5
ответ дан 28 November 2019 в 21:58
поделиться

Я считаю, что XSLT на самом деле является хорошим первым чисто функциональным языком: http://blogs.msdn.com/ashleyf/archive/2007/04/11/xslt-a-pure-functional-language.aspx

2
ответ дан 28 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

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