HN2new | past | comments | ask | show | jobs | submitlogin

Here's an example function which shows that they can have multiple implementations (click the Details tab) - in this case there's an implementation in Python and one in JavaScript: https://www.wikifunctions.org/view/en/Z10070

And a much more interesting example which helps illustrate why Wikipedia built this: "genitive case of Bangla word in Python": https://www.wikifunctions.org/view/en/Z10594



All the functions are numbered and call each other. substring_exists(haystack, needle) is implemented as

    function Z10070( Z10070K1, Z10070K2 ) {
     return Z10070K1.includes(Z10070K2);
    }
This is atrocious! Might as well come straight out of a decompiler.


And an explicit goal of the project: https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Google.or...

> In particular, according to Keet, Grammatical Framework notably lacks the flexibility to handle certain aspects of Niger-Congo B languages’ morphology. The traditional answer to this kind of critique would be to say, “Let’s just organize an effort to work on Grammatical Framework.” The design philosophy behind Abstract Wikipedia is to make as few assumptions about a contributor’s facility with English and programming experience as possible. Organized efforts around Grammatical Framework (or otherwise) are not a bad idea at all. They may well solve some problems for some languages. However, the contributor pools for under-resourced languages are already small. Demanding expertise with specific natural languages like English and also specific programming paradigms contracts those pools still further.

and

> A solution designed by a small group of Westerners is likely to produce a system that replicates the trends of an imperialist English-focused Western-thinking industry. Existing tools tell a one-voice story; they are built by the same people (in a socio-cultural sense) and produce the same outcome, which is crafted to the needs of their creators (or by the limits of their understanding). Tools are then used to build tools, which will be again used to build more tools; step by step, every level of architectural decision-making limits more and more the space that can be benefitted by these efforts.

and

> The evaluation acknowledges little to no value to the effort that Wikifunctions is investing in being multilingual in terms of natural languages, even for implementations. It is unclear as to how a solution that is built on top of (the existing Lua-based Scribunto scripting system) would succeed in being multilingual, and not just be an English project which the other languages may be invited to use, if they understand it, but would be mostly blocked from contributing to.


The plan seems to actually be auto replace the Z values in the editor views with human readable values, which will automatically use the contributors preferred language.

This of course only works if all functions, and all parameters, etc have had labels submitted for your language.

They indicate wanting to cater to cultures that might not use a base 10 representation of numbers, so would presumably autotranforms numeric literals for people from those cultures.

They are worried about programming languages being englished based, but seem to think that similar autotranslating of keywords is a good enough approach, so that is why they NEED to support multiple languages, so that they might hypothetically support some language that supports base 60 math and keywords based on [insert language here].

Plenty of room for abuse here, as it would be really easy to edit functions being used for text generation of less popular languages to output offensive text, for things not tested by the test cases. And nobody except people who know that language will be able to tell for sure that this is not a legit contribution.

Then of course people will by trying to code sandbox and then container breaks, cryptominers, etc. I expect a giant game of whack-a-mole between the project and the admins.

On that note even ignoring the abuse, or people trying to utilize the service for free compute resources, I can see the costs of this service becoming substantial really quick. Just from things like legitimate contributions of test cases, and new language implementations, and running the test cases again all the different implementations.


> And nobody except people who know that language will be able to tell for sure that this is not a legit contribution

This is already the case with wikipedia, there was the recent story that most of the Scots wikipedia was written by someone who does not know the language, in the style of "English, as she is written".


Ah so pretty much how Excel has localized function names


Which solves about zero problems and creates many. Let's stop this woke nonsense and instead focus on improving english speaking ability of the world. Having a common language everyone understands only has benefits.


> ...Westerners... > ...Western-thinking

When did we become Westerners and started to think in the same way?

I recognised a trend for such expressions in the news, too, in the last few years. It's misleading and creates a "we against them" mentality.


When I think of 'Western culture', I think of the culture that developed in Protestant Europe and English-speaking America from the early modern period onwards, and aspects of which are diffusing through the rest of the world. I agree that it's a bit too broad of a characterisation to really be of use, but it is a thing.


For many, many centuries. It's not anything from the last few years, nor is it "we against them".

The West is essentially all the world's nations whose cultures are derived from or greatly influenced by Latin speakers and Judeo-Christian values, which traces its influence back to Ancient Rome.

It's a very valuable and important thing to recognize, because things that people in the US and Europe often implicitly assume are human universals, aren't. They're only universal across the West, and not found in e.g. China or India.

So it's not creating division. It's recognizing difference that already exists, but that not everyone is always already aware of, because we tend to exist in our own little bubbles.


Allegedly, somewhere between 1500 and 1980. "The decline of the west" by Spengler was written a century ago.


A solution designed by a small group of Westerners is likely to produce a system that replicates the trends of an imperialist English-focused Western-thinking industry.

WTF. Virtue-signaling identity politics has no place in computer science.


> WTF. Virtue-signaling identity politics has no place in computer science.

The fact that I couldn't type my name for decades in most IT systems because of the charsets used is not "virtue-signaling" to complain about, thank you.


You could just use whatever romanized version of your name is the standard for your language and writing system without any real down side except EEWWWWW ANGLOCENTRISM NOOOOO. That way people from other cultures around the world (who generally don't have trouble learning the latin alphabet in addition to their own) will be able to do something with your name rather than seing random symbols they can't even attempt to pronounce, won't remember and certainly won't be able to re-type.


Please don't be a dick and dismiss it as "EEWWWWW ANGLOCENTRISM NOOOOO". Fuck off.


When in Rome, do as the Romans (and use ASCII). Please don't be a dick and DDOS the Romans' IT systems with needing to support the vagaries of every foreign dialect in the world.


I'm not in Rome. I'm trying to book an airplane ticket in my country. But it's not possible to write my name, even though my name contains letters found in our alphabet.

> with needing to support the vagaries of every foreign dialect in the world

Then don't impact the Roman software on people outside Rome. Basically the definition of imperialism.

Edit:

> I think the Internet was a better place before Eternal September, when it was the exclusive precinct of relatively affluent white male nerds. (...) I think elitism is right.

Ah, I see this from you in another thread. So you're basically against other cultures and groups being present online. No wonder you want everyone to conform to your definition of how things should be. Too bad the ship has sailed, we're here.


> I'm not in Rome.

You (or others you depend on) are choosing to use "Roman" software.

> I'm trying to book an airplane ticket in my country. But it's not possible to write my name, even though my name contains letters found in our alphabet.

It is possible to write your name in a way that lets the airline and airports identify you, which is what matters. It might not be possible to write it exactly the way you'd like but that's not causing any real issues except making you upset.

It's also pretty ironic to complain about having to deal with other cultures for (presumably) international travel.

> Then don't impact the Roman software on people outside Rome. Basically the definition of imperialism.

"Anglocentric" software isn't forced on anyone. You can campaing for your country to disregard all English writings and re-discover all that knowledge from first principles instead if you'd prefer. But that would make you much worse off, wouldn't it?

English-first computing dominates precisely because not having to deal with localization (or at least not initially) lets people focus on what actually matters to make work. Don't like it? Write your own software instead of complaining that relying other people's work means you sometimes have to adapt a bit.

> So you're basically against other cultures and groups being present online.

Plenty of people from other cultures (including me) have no problem with learning English to interact with the world and tap into the vast pool of English knowledge and tools. Language != Culture.

> Too bad the ship has sailed, we're here.

So is English as the lingua franca of the computing age.


Thanks for again dismissing peoples' feelings and saying they don't matter. I'm not gonna bother replying to your ill conceived points.


Hate to be the one to break it to you but there's no such thing as "apolitical" technology. Everything designed by humans has and always will have some kind of ideological or political underpinnings or context. Just closing your ears and pretending that everyone is neutral and objective is foolish.


They could have say it in more neutral way:

> A solution designed by a small group of people is likely to produce a system that replicates trends specific to this group and are not universal enough for our need.


What? It's a true statement, but it has little to do with computer science, but does to do with software engineering. Did the word "imperialist" trigger reflexive typing?

In my opinion this project is about 20 layers too abstract to actually produce working and useful software. But it's not virtue signaling if they're actually trying to do the thing, is it? Virtue signaling is when you act like you're doing something virtuous and then don't.

If they're trying to create a programming syntax that maps to every known human language, good on them. They'll probably fail, but it's not really a stupid concept, especially when your organization's purpose is to spread knowledge to the whole world.


It’s all a bit silly, any global encyclopedia is almost imperialist by definition. Organizing and categorizing knowledge in a centralized way is at its roots an imperialist project (see the history of science and its development alongside the rise of the British power for example). So might as well pick the best tools for the job (English and well known programming languages). Doing otherwise makes it seem like someone didn’t completely think through their motivations. Non-imperialists don’t build encyclopedias of global knowledge. Let local stay local.


No. A global encyclopaedia might be global, but does not have to be imperialist, if the control over the content and the ability to contribute to the encyclopaedia is not limited to imperial structures.

Unless you equate "global" with "imperialist", in which case your statement is true by definition. But then everything that is done on a global scale is necessarily imperialist, and then one of the two terms does not seem useful anymore.

Equity can be global.

That would require the equation to be wrong.


> In my opinion this project is about 20 layers too abstract to actually produce working and useful software. But it's not virtue signaling if they're actually trying to do the thing, is it? Virtue signaling is when you act like you're doing something virtuous and then don't.

If one belives avoiding well-known tools and (english-based) programming languages is likely to actually make it easier for contributors using those languages to contribute to Wikipedia in those languages, then it's real. If one believes that this is not actually going to result in more usable tools, and the intention of avoiding tools from English-speaking Westerners is signalling rather than actually getting better results, then it's virtue signalling.


But they actually wrote that in English (while being fellows of Google - one of the most imperial corporations in existence - as I understand) and are sure to use a lot of existing - and English-based - tools to implement it. I mean, if they abandoned the whole Western English-based foundation they rest on - including Von Neumann architecture for computers they use, for example - and started building it from physical laws back up (oh wait, physical laws also mostly discovered by Westerners and they probably learned them in English, which already imbued them with the imperialist perspective) then maybe it could be recognized as a honest - if mind-bogglingly misguided - effort to expunge the presumed imperialist bias. Since it is never going to happen, it can not be anything but virtue signalling.


By that account, above discussion of what is and isn't virtue signalling is itself virtue signalling--mere platitudes rather than contributing to actionable outcomes.

I'd think us, or any foundation for that matter, should be able to lay out an agenda before outcomes are achieved, how (un)realistic they may be. A dot on the horizon to aim for, not necessarily achievable but a heading at least.


> By that account, above discussion of what is and isn't virtue signalling is itself virtue signalling--mere platitudes rather than contributing to actionable outcomes.

If you're just saying it for the upvotes, yes. If you're actually trying to get people to shift their efforts towards more effective things (such as translation support libraries that don't insist on avoiding English at every level), then no, it's legitimate effort.

> I'd think us, or any foundation for that matter, should be able to lay out an agenda before outcomes are achieved, how (un)realistic they may be. A dot on the horizon to aim for, not necessarily achievable but a heading at least.

An aim is fine. It's a question of sincerity.


It's more vice-signalling. His complaint is a reaction to try and show others he doesn't care about the thoughtfulness behind the original statement.


s/virtue signaling identity politics/caring about other people/g


I don't see how this is caring. This is dismissing and invalidating the work of large class of people (Westerners and English-speaking people) by applying a jargon label "imperialist" (what does that even mean here? That they are about to don pith helmets and rush out to re-conquer India?) and implying that this label automatically makes their contributions less worthy - to which implication you just added the implication that they are presumed to be incapable of caring about other people. Does look like particularly helpful for anything, rather quite alienating.


I know it's triggering to you. But it's just choosing to be nice to people. Not a bad thing. You're comment just comes across as vice-signalling.


I always wonder why can't one choose to be nice to people without using divisive language, emotionally charged accusatory jargon (like "imperialist"), devaluing somebody's sincere contributions and framing the situation in group vs. group terms? Like, if the point is that you choose to be nice to people, why can't you start with being, you know, nice to people?

For example, if the same sentence was formulated as something like "expanding the contributor community by including people knowledgeable and proficient in languages not commonly spoken in the West and soliciting feedback from such contributors would greatly expand the appeal of the resulting solution and make it more widely applicable" - wouldn't that sound more nice to people?


It's pretending to be nice to one group by dunking on another group largely responsible for the foundations they are standing on.


I don't know why he rails against English.

Computer programming uses a small subset of English in code and the industry nearly always uses the American socio-cultural kind of English.

English is the fullest language we have, with all the infamy of pilfered concepts from the European continent.

The language/natural language distinction is reductionist, halving all language, when in reality it is a structure that cannot be halved.

He recommends reducing languages down to their most basic elements. This is a mistake that doesn't go anywhere. You end up with a pile of sticks.

All his crictisms of English (one voice, limited understanding, ect) can be leveled at any living, breathing human.

I wonder where the experiment goes. His criticisms of English should be better.


Ok so its just overcomplicated for woke reasons.

Having a lingua franca for computing is a good thing. All these efforts to localize computing are nothing but a giant waste of time.


This is brilliant! It serves as a single source of truth, builds on first principles, and acts like a universal test case.

Just as each Wikipedia article is about one "thing", each Wikifunction performs one job. Once you know a Wikifunction works reliably, you know every other Wikifunction which depends on it can theoretically trust its output.

This project seems really exciting, especially in the context of AI. Very cool and I hope to see it flourish.


Yes the whole goal with this is to extend the general notion of FaaS (Functions as a Service) into something that can work seamlessly, both within their own projects and across the Web. Similar to what Wikidata is already doing for common real-world entities and concepts. Of course, the devil is in the details with these kinds of things; it's likely that implementations of even the most basic functions will behave in subtly different ways across languages. Their testing framework is supposed to mitigate this but it looks quite ad-hoc.


> it's likely that implementations of even the most basic functions will behave in subtly different ways across languages

Stares at C/C++


I assume it's intentional, so that source code can be stored in a form that's independent of natural language. They can just call to a LSP backend for the implementation language to rename identifiers in the source code before showing them to the user, much like Wikidata does today with its semantic content.


I think you're about the goal, but in practice it looks more line they are making code that is readable in 0 languages instead of at least 1 language. It looks like in practice people are unsurprisingly coming up with workarounds for this by adding some boilerplate code, these are the first two lines from the python example above (also all the local variables in the function are in English too):

  def Z10591(Z10591K1, Z10591K2):
    word, is_ra_plural = Z10591K1, Z10591K2


so we will need to learn to read gzip (and other compressed binary formats) as if they were not compressed

this is also related to how 2 hour long movies will diminish into a niche... and movies of the future will be more like [0]

this observation is on the same trend as operas; which way back would last all evening (over 3 hours was typical)

[0] https://www.youtube.com/watch?v=6Asx_XhPH80


You get used to it. I…I don’t even see the huffman code. All I see is blonde, brunette, red-head.


> so we will need to learn to read gzip

this rant gave me a proper laught. thank you.


There's no reason why English words couldn't be translated any better than Z11410, but now editors will have an extra layer of indirection.


And what happens when they try to implement a language that doesn't allow function names like these? Or has multiple possible syntaxes for a function? Or differentiates between methods, lambdas, procs, etc? Or straight up doesn't have functions but is still very capable of solving the problem?


They are unique hashes, similar to Unison language. Interesting.


How is the 'genitive case of Bangla word' a good example? This function's signature contains many hard-coded language specific assumptions.

- Bangla according to the function has only few irregularities, rest is algorithmic transformation of the word given

- Many languages have a huge number of irregularities

- Many languages express case information somewhere else in the sentence-construct, so it's not just a word-transform.

This very much seems to try to replicate the machine-translation efforts of foregone ages.


Whoa, I never knew (and accidentally discovered through this) that empty strings are valid substrings of other strings.


It’s a bit like the empty set that is a subset of any other set.


It depends on language, library, and which substring function. And in some languages, like Bash IIRC, some functions and scripts handle differently `foo=""` (variable foo is set to empty string) and `foo=` (variable foo is not set).


`foo=` does set the variable to empty in Bash and other POSIX compliant shells.


So long as you consider "empty strings" to be "strings" in the first place. String of what?

It's like saying you have an "empty cup of water".


As long as you consider cups of water and cups of milk be different objects (i.e. cups are not interchangeable, and you can't just throw out milk and fill it with water) it is a completely sensible statement.

For example, in Jewish religious families, there are often two sets of kitchen utensils - for meat products and for dairy/other products, since mixing those makes the food unfit for consumption by a religious person. In this situation, if you said "I have an empty meat pot" and somebody answered you "No, I need an empty milk pot, give me another one!" - it would make a total sense. Even though both pots are empty, they are not the same kind of pot for their users.

Similarly, if a string is a sequence of certain objects (characters, bytes, runes, graphemes, whatever you please) then empty sequence of such objects is not the same as an empty sequence of other objects - you could append a character to it, but you can't append a database connection to it, for example, and expect something sane to happen.

So yes, "empty cup of water" is exactly what it is, because in most programming languages, empty cups are not all alike. In some languages, there are sequence types that are agnostic towards their elements, and then an empty sequence of that kind wouldn't be a sequence of anything - it'd be just a separate entity. But strings rarely are implemented this way, for many practical reasons.


People can come up with whatever weird believes they want, that doesn't mean this actually makes sense.


You entirely missed the point of the example. The point is not that you are supposed to embrace their beliefs. The point is that object that are all alike in one system can be very different in another, and if you assume they are all alike, you will misunderstand what is going on. Such as, if you assume that empty string is just "nothing", you will misunderstand how strings - and in general, typed sequences - work in most programming languages.

It's like a bad student that when the teacher says "assume the train departs from the station at 9 am", to formulate a math problem, objects "but the train actually departs from our station at 10am!". Way to miss the point!


You just... Blew my mind.

So, but wait... Is the genitive "of water" functioning like an assertion? "All of the contents of the cup are water."

And wouldn't that assertion, in the case where the cup has no contents, be a vacuous truth?[0]

In other words, a cup of water, if it actually has water in it, cannot also be a cup of magma. But there's nothing stopping an cup with no contents at all being "of" both.

[0] https://en.wikipedia.org/wiki/Vacuous_truth


It holds true mathematically speaking. You can make (mathematical) sets of everything but there's only one empty set.

It's a bit like that with pointers in C: a char* is not a int* but null pointers are convertible to any pointer type.


It's time to put down the encyclopedia and pick up Plato and Aristotle


Well, not just _other_ strings.


As long as your language includes an empty string concept, why not? Similarly, is an empty array a subarray of any array? And on the other end, can you have an empty number boolean?


But then if empty string are part of a string at what index do you find an empty string within a string you cannot dereference the space between letters


At every index of course, including one past the last character.

You don't need to dereference anything here as the empty string has length 0.


I see thanks




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: