User talk:Vitalik

Welcome
--Cinemantique (talk) 17:41, 4 July 2015 (UTC)
 * Thanks, Cinemantique. I'm glad to see you here! --Vitalik (talk) 20:42, 4 July 2015 (UTC)

Module:inflection
Can you tell me what are you trying to accomplish here? — Keφr 15:11, 7 July 2015 (UTC)
 * Hi Keφr, yes, of cause. Thanks for interesting that!
 * As for now we have a lot of different instruments for building inflection tables in the Wiktionary (either a huge amount of special templates, or language-individual complex modules, or even both of them).
 * Templates (i.e. for russian)
 * [[Image:Symbol support vote.svg|20px|link=]] They are easy to create and easy to use.
 * [[Image:Symbol oppose vote.svg|20px|link=]] But it can be difficult to change them all together or add something "intellectual" there. Also it can be a little problem to choose a proper one from the large amount templates.
 * Modules (i.e. for russian)
 * [[Image:Symbol support vote.svg|20px|link=]] They are easier to use. We don't need to know about huge amount templates (their names, different arguments, etc.). Also we can implement more complex logic there (i.e. determine class and stem endings automatically).
 * [[Image:Symbol oppose vote.svg|20px|link=]] But they are hard to create (only programmers can do that) and it also hard to change/understand another's module even if you are programmer.
 * So we propose to create only one super-module (not so complex) and special data-modules with inflection rules for each language. And this approach combines advantages of both old approaches (without their disadvantages).
 * Any user can create or change such data-module. You don't need to be a programmer for that. And also we can provide any complex logic in such data-modules.
 * I'll certainly write documentation and instructions for that. But if you have any questions please ask me. Vitalik (talk) 16:07, 7 July 2015 (UTC)
 * …while creating other disadvantages. "Any user can create or change such data-module. You don't need to be a programmer for that. And also we can provide any complex logic in such data-modules." -- these are mutually incompatible. If your "super-module" supports arbitrarily complex logic, you are effectively creating a programming language. And programming language or not, this data module language will be something that has to be learned. Also, adding yet another layer of code means adding yet another layer of code which can fail.
 * I have never encountered a module on this project whose code I could not follow, except for some imports from . Now notice that I had to ask you what your code does. Sure, you can write INTERCAL in any language, but problems of comprehensibility are generally addressed by appropriate conventions. People like Anatoli or Vahag, who know little Lua, create practical transliteration modules on a semi-regular basis; admittedly by naïve copy-paste and reasoning by analogy, but you cannot say they have no understanding at all of what they do. So I think you really overstate this "programming languages are too hard" thing. Even if this is a problem, creating another language to be learned is not the right solution.
 * I think inflection modules and tables should be handled by per-language modules using simple and direct Lua constructs, so that all you have to do to understand them is laid out right there on a single page. I doubt you can create a single centralised module to satisfy all languages' requirements and manage to end up with anything sane.
 * (Also, does not translate as . But I nitpick.) — Keφr 17:46, 7 July 2015 (UTC)
 * Thanks for your opinion and explanations. Let me add my thoughts on your words.
 * I believe that it's really possible to build solution that will allow us to describe enough complex logic with quite easy description rules in data-modules. And I believe it will be possible to write sufficiently simple central module for that. Let's just check is it possible indeed or not.
 * That's correct that we are adding something like "new layer of code" (which can fail), but if central module is sufficiently tested then it will be less likely failed with new data-modules.
 * I didn't mean that "programming languages are too hard", I've just meant that it can be hard to investigate another's modules sometimes. And if we have individual modules per each language (and those modules are written by different users) we'll have to gain an understanding of each module individually again and again. It would be ideally if all individual inflection modules would be written in common and simply understandable way but I think it almost impossible because anyway each user will bring his own (individual) way of coding.
 * A few words about "syntax" of suggested data-modules:
 * We have three sections there: " " (where we describe some string constants), " " (where we describe some checks and rules) and " " (where we describe how to generate resulting word forms) and we can use existing templates with declension/conjugation tables (just to display resulting word forms in usual way).
 * Each condition in section " " can contain some checks (i.e. " " to check last symbols of base word, " " to check value of template argument) and some actions (i.e. " " to set value for affix/variable, " " to apply some class from "classes" section, " " to change value with using regexp).
 * It will be quite simple and understandable syntax. It will be much easier to understand and use it than to investigate and fix individual modules written on Lua. I'll write documentation for it when it will be enough tested and ready to be proposed to wiki-community.
 * And thanks for pointing on my English mistakes, my English isn't really excellent yet :) --Vitalik (talk) 18:58, 9 July 2015 (UTC)

Can we move tests from user space
1. One missing function is to match the number of forms (13 forms of "печь") against expected 13.

See User:Vitalik/inflection/units/ru-noun/testcases/other

2. main page could be prettier:
 * Module:es-conj/data/-ar - we can display refults from subpages at one page
 * Module:User:Vitalik/inflection/units/ru-noun/testcases

I have no clue how to implement it with LUA yet. d1g (talk) 08:01, 17 April 2017 (UTC)