Т.е. А матчится, и тут же является длиной след. поля?
Да. Я написал чисто попробовать. А оно сработало 8) В итоге разбор FT 1.2 пакета(в сравнении с аналогичным кодом в дельфе) - по сути одна строчка. Я ее разбил на несколько только чтоб читать удобнее, иначе вылазить за край 8)
А там процедурка в 111 строк. Строго говоря, в эрланге тоже не одна строчка, а, наверное, пара десятков(ну кейсы там всякие и т.п.). Все равно разница впечатляет. Как и элегантность кода.
вот какбы чёткое сравнение (конкретный алгоритм, сравнение в числе строк) было бы неплохой иллюстрацией удобства эрланга. плюс вопрос - после реализации на эрланге ты бы смог улучшить дельфовую версию?
после реализации на эрланге ты бы смог улучшить дельфовую версию?
Врядли, т.к. эрланговая версия не является оптимизацией дельфовой - там совсем другой способ(паттерн матчинг), который в дельфе отсутствует. А дельфийскую версию я вылизывал в течении нескольких лет, периодически возвращаясь к этому куску кода, каждый раз будучи все более опытным разработчиком 8)
Странный у тебя вывод. Я почерпнул. Просто в дельфе подобное не реализовать. Т.е. реализовать-то можно, конечно - с костылями, что определенно не будет улучшением.
Почему ты так думаешь? И почему ты думаешь, что твоё дельфовое решение является чем-то совершенно отличным от кода на эрланге? Байты там другого размера? Скажем, ты можешь сказать, во что на дельфе выльется кусок приведённый выше? Про "не реализовать" - не аргумент, языки тьюринг-полные, так что реализуемо в любом случае. Ну уж тем более современные языки во многом очень подобны, а паттерн-матчинг вполне себе ложится на "традиционные" языки.
Ты опять нападаешь с непонятной мне целью. Паттерн-матчинг в дельфе(как мне видится) можно реализовать только через дополнительную функцию (что-нибудь вроде match_pattern(Pattern,Value):array of TVarValue). Код самой функции и разбор выданных ей результатов - это нехилая дополнительная нагрузка.
Да не нападаю я :) Почему мои вопросы ты так воспринимаешь? По-моему как раз из рассмотрения вопросов проистекает вменяемое понимание и, если хочешь, инсайты о сущности обсуждаемого. Про нагрузку не понял, про дополнительную функцию тоже. Из твоего предложения похоже что ты не совсем понимаешь вопрос - я не хочу повторения эрланговского кода 1-в-1, а повторение его функционала.
Функционал - это получение из определенных начальных данных определенного результата. И в дельфе и в эрланге я один и тот же функционал реализовал. На моем уровне знания этих языков и опыта - и эрланговский и дельфийский варианты являются наиболее оптимальными, каждый для своего языка.
А на вопрос не сможешь ответить? Могу иначе задать: как ты будешь решать задачу, которая решается паттерн-матчингом на языке, где его нет (ну и нельзя добавить, как в лиспе), типа на паскале/си? Если в этом вопросе видишь нападку - не отвечай, я не обижусь :)
Лёня, вопрос был "как?". Естественно, если ПМ нет, то им ты решить задачу не сможешь, ну мыж тут не в логике упражняемся по-моему? Если раскрывать мои "коварные планы", то я просто лишь хотел показать, что есть ПМ, и что его впоне можно переносить на "обычные" языки (пусть результат и будет выглядеть не столь живописно), а результат, скорее всего, будет не очень уступать твоему оптимальному, а местами и совсем не будет. В принципе есть более высокоуровневая мысль - можно знать языки и программить на них в рамках их терминов, а можно разбирать общие подходы и их аналоги между языками и в результате получать "больший арсенал" даже на традиционных языках.
Конкретный вариант можно назвать только в условиях конкретной задачи. Например, для разбора бинарных строк в дельфе я пользуюсь циклом в виде конечного автомата.
А спецзаписей я вообще не припомню где-либо (хотя я этим не сильно и занимаюсь).
Reply
Да. Я написал чисто попробовать. А оно сработало 8)
В итоге разбор FT 1.2 пакета(в сравнении с аналогичным кодом в дельфе) - по сути одна строчка.
Я ее разбил на несколько только чтоб читать удобнее, иначе вылазить за край 8)
Reply
Reply
Строго говоря, в эрланге тоже не одна строчка, а, наверное, пара десятков(ну кейсы там всякие и т.п.). Все равно разница впечатляет. Как и элегантность кода.
Reply
плюс вопрос - после реализации на эрланге ты бы смог улучшить дельфовую версию?
Reply
Врядли, т.к. эрланговая версия не является оптимизацией дельфовой - там совсем другой способ(паттерн матчинг), который в дельфе отсутствует. А дельфийскую версию я вылизывал в течении нескольких лет, периодически возвращаясь к этому куску кода, каждый раз будучи все более опытным разработчиком 8)
Reply
Reply
Я почерпнул. Просто в дельфе подобное не реализовать. Т.е. реализовать-то можно, конечно - с костылями, что определенно не будет улучшением.
Reply
И почему ты думаешь, что твоё дельфовое решение является чем-то совершенно отличным от кода на эрланге?
Байты там другого размера?
Скажем, ты можешь сказать, во что на дельфе выльется кусок приведённый выше?
Про "не реализовать" - не аргумент, языки тьюринг-полные, так что реализуемо в любом случае.
Ну уж тем более современные языки во многом очень подобны, а паттерн-матчинг вполне себе ложится на "традиционные" языки.
Reply
Паттерн-матчинг в дельфе(как мне видится) можно реализовать только через дополнительную функцию (что-нибудь вроде match_pattern(Pattern,Value):array of TVarValue). Код самой функции и разбор выданных ей результатов - это нехилая дополнительная нагрузка.
Reply
Почему мои вопросы ты так воспринимаешь?
По-моему как раз из рассмотрения вопросов проистекает вменяемое понимание и, если хочешь, инсайты о сущности обсуждаемого.
Про нагрузку не понял, про дополнительную функцию тоже.
Из твоего предложения похоже что ты не совсем понимаешь вопрос - я не хочу повторения эрланговского кода 1-в-1, а повторение его функционала.
Reply
И в дельфе и в эрланге я один и тот же функционал реализовал.
На моем уровне знания этих языков и опыта - и эрланговский и дельфийский варианты являются наиболее оптимальными, каждый для своего языка.
Reply
Могу иначе задать: как ты будешь решать задачу, которая решается паттерн-матчингом на языке, где его нет (ну и нельзя добавить, как в лиспе), типа на паскале/си?
Если в этом вопросе видишь нападку - не отвечай, я не обижусь :)
Reply
Или есть такие задачи, которые решаются только паттерн-матчингом?
Reply
Если раскрывать мои "коварные планы", то я просто лишь хотел показать, что есть ПМ, и что его впоне можно переносить на "обычные" языки (пусть результат и будет выглядеть не столь живописно), а результат, скорее всего, будет не очень уступать твоему оптимальному, а местами и совсем не будет.
В принципе есть более высокоуровневая мысль - можно знать языки и программить на них в рамках их терминов, а можно разбирать общие подходы и их аналоги между языками и в результате получать "больший арсенал" даже на традиционных языках.
Reply
Например, для разбора бинарных строк в дельфе я пользуюсь циклом в виде конечного автомата.
Reply
Leave a comment