1. 0
    We need a better language design mobile programming medium.com
  1.  

  2. 3

    Perhaps a more descriptive title: If apps are mini-languages, where’s our all-round language?

    1. 3

      I like that!

      Most people would likely point to search engines (Google, Yahoo, Bing), digital assistants, (Siri, Cortana, Alexa, Google Now) or messaging apps (WeChat, Line, Messenger, Kik, WhatsApp).

      Although they represent a step in the right direction, they seem to heavily rely on natural languages (text or speech), which I believe is a mistake.

      1. 4

        I think people operate on a flawed assumption: that because we use natural language in our daily lives, we must be good at it.

        The reality is, in real-world situations, we constantly try and reduce our reliance on natural languages to reduce ambiguity. At a fast food restaurant, you order “A number 3, supersized”. While the system-as-a-whole can generally respond properly when you add, “but with onion-rings instead of fries, hold the onions on the burger, and can I also get an apple pie?”, its throughput drops precipitously.

        Natural language is extremely complicated, not just for machines, but also for people. Constraining natural language, or better yet, providing a domain-specific language (which may be a visual language- your app’s interface) that is suited to the task at hand makes using the application easier, not harder.

        1. 1

          I think the problem with natural languages is not that they’re general purpose, but that they lack interactive guidance.

          For example, if you ask me to program something in C# using Notepad, I’ll struggle. Yet, if you ask me to program something in C# using Visual Studio, I’ll do just fine. The language hasn’t changed, but the tool and context in which I use it has. This makes all the difference.

          What we need is an IDE for the mind.

          1. 3

            I think we’re really saying the same thing. Your IDE takes the possible space of all strings and helps you constrain what you actually say by showing you the probable space of syntactically correct statements. You could enter anything into your IDE- any random string. But only some strings will actually make sense. And fewer of those possible strings would accomplish what you want.

            What I’m saying is that your IDE provides an interface- a sub-language- that guides you in the correct usage of the IDE.

    2. 3

      I think there’s a kernel of an interesting lens in saying “What if every app is a language?”

      That said, I can’t really see how that gets us to “What we really need is one app/language that does everything.”

      I’m not going to use matrices to describe a first kiss. I’m not going to use poems to describe the PID derivation for a water heater. I’m not going to use an emoji to describe the eigenfunctions of the wave equation. Hell, we arguably don’t even use the same languages all the time for expressing affection, and we’ve had thousands of years to converge on a solution for that.

      I think we just need to be more judicious and well-versed in the languages we already have.

      ~

      The article would’ve been better served, in my opinion, had the direction been taken of “What if instead of an app for performing a certain action (shipping food, shipping people, shipping pets), we had a language for specifying desired changes to the world state, and let companies bid on solutions to that?” Like, what if instead of apps we had a better UI for describing constraints for commercial solvers to bid on.

      That would’ve been an interesting read.

      1. 2

        The article would’ve been better served, in my opinion, had the direction been taken of “What if instead of an app for performing a certain action (shipping food, shipping people, shipping pets), we had a language for specifying desired changes to the world state, and let companies bid on solutions to that?” Like, what if instead of apps we had a better UI for describing constraints for commercial solvers to bid on.

        This is exactly what I’m leading to. I’ve been trying to communicate these ideas for a while, but couldn’t figure the right way to introduce or frame them. I thought I would write a few abstract blog posts to gauge people’s reaction and gather feedback. Your comment is immensely helpful.

        My plan is to build a global decentralized open knowledge base using semantic technologies such as RDF and OWL. Agents (whether human or machine) can contribute real or ideal descriptions of the past, present, or future. natural language processing software will process historical archives to contribute real descriptions of the past, IoT devices will use their sensors to contribute real descriptions of the present (or immediate past), prediction algorithms will contribute real descriptions of the future, and people will communicate intent by contributing ideal descriptions of the future. Agents can invest their reputation (the new currency) to endorse real propositions (facts/predictions) or support ideal propositions (wishes). This essentially becomes a marketplace, where opportunities exist in the delta between the real and the ideal, and contracts are defined as endorsements of future realities. Statements can be as precise or as ambiguous (range of possibilities) as necessary. Statements can have different levels of importance to different agents, based on their endorsements and web of trust.

        I’ll try to describe my vision in more details in future blog posts.

        1. 3

          Ah, nice. Good luck on the future posts! Just try to keep them grounded in technical information. :)