Подтвердить что ты не робот

Советы и ловушки в обучении XSLT и "реальном" функциональном программировании?

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

Я с удивлением прочитал на странице 33 книгу Майкла Кэя, что XSLT имеет свои корни в Схеме. Википедия говорит,

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

Возможно, я знаю (или скоро узнаю) больше о функциональном программировании, чем я думал. Поиск SO для сообщений, таких как Является ли 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, ALTER и ON ERROR RESUME NEXT, которые не подходят для "реальных" языков функционального программирования?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

В качестве языка XSLT зависит от функциональных языков и текстовые шаблоны соответствия языков как SNOBOL и awk. Его самый прямой Предшественником был ISO DSSSL, язык которые выполняли ту же функцию для полный SGML, который XSLT выполняет для XML. Многие комитеты по стандартам, которые разработанный XSLT ранее работал на DSSSL, включая Джеймса Кларка. XSLT также можно считать завершением Тьюринга шаблонный процессор.

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

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

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

Ответ 3

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

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

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