
Emojicode: a static, strongly typed programming language - apo
http://www.emojicode.org/
======
PeCaN
This may have the highest quality-of-implementation/quality-of-idea ratio of
anything I've seen.

------
kazinator
> _static, strongly typed_

:-(

Blech, impractical, academic garbage for people who wear starched shirts and
arrange pencils on their desks in neat rows. I'm sticking with Emojilisp for
all my development.

[http://emojilisp.com/](http://emojilisp.com/)

~~~
bitwize
Strong static typing is pretty much an unmitigated win.

~~~
cbd1984
OK, program in a language where an array's size is an immutable part of its
type. No casting, no autoconversion, no manual conversion. Now write reusable
functions which operate on arrays.

Remember that a string is a kind of array, and inherits all of the same
properties.

~~~
possibilistic
This feels like a straw man argument against static typing. No statically
typed language I use suffers from this because they have great data structures
and generics.

Languages such as Rust that lean on inference are an absolute joy to program
in.

~~~
steveklabnik
Actually, Rust arrays have the size as part of their type, and without type-
level-integers, there is a lot of pain around them. :(

That said, there's the solution: type level integers.

(That also said, Rust's String type isn't an array, because it's mutable, so
the size can't be a part of the type)

------
fibo
Finally a common "bimbominkia" (I don't know the word for that in English, he
is a teenager that writes emoticons in a chat and post selfies on fb) can
write accidentally a Sieve of Eratostenes.

We should propose to the mobile world congress to add it on every mobile
device.

~~~
oneeyedpigeon
I wonder how many people in the world would have any idea what on earth the
sentence "Finally a common "bimbominkia"can write accidentally a Sieve of
Eratostenes" means. You may be unique :-)

------
yanowitz
I think this is a great artistic piece. It made me think about lucky I am to
have English as a first language, as it's also the language of CS and thus,
computer language keywords. For those learning programming who don't know
English, I assume this isn't too far removed from their experience.

------
k_sze
At last. A true mobile-first language.

------
010a
It has generics?! My god, its already more advanced than Go.

------
oniony
I _really_ hope this guy has written a regular language and has made a tool to
convert the keywords to unicode symbols. Otherwise this is the most
professionally presented waste of time I've ever seen.

~~~
obvio171
It's about time we let go of the symbols hardcoded onto our keyboards and
start finding better abstractions for our thoughts.

Touch devices have already started the move to a virtualized keyboard, but so
far they only parrot the _static_ layout of a QWERTY keyboard and add a few
tabs for emojis.

Predictive typing adds a few higher-level, _dynamic_ keys to your virtual
keyboard as a top row.

But if you make _every_ key dynamic and predictive, you have a self-
programming macro generator guessing your next keystroke and combining
frequent sequences into a new single function.

And if you have that, why do you need a 2D keyboard with the confusing N-to-1
mapping of functions to fingers?

The keyboard has to rest on a surface, you need to make non-discrete movement
in space to find what you want, and the whole thing leads to enormous bodily
stress.

It is time to wash the printed letters off our keyboards, tear out anything
that is not the homerow, glue those buttons to our 8 homerow fingers, and live
a full, untethered, virtual, predictive typing life =)

I want to tap on my thighs while zooming through predictive VR code
interfaces, not go back to ASCII.

~~~
eggy
That would be APL! J is similar in using 'Tools for Thought' per Ken Iverson's
paper, but it uses ASCII to APL's symbols as abstractions for larger concepts
similar to the way math symbols stand for more.

~~~
obvio171
I think a concatenative language with an _immutable append-only log_ (instead
of a stack, like Forth) as its implicit data structure would be the best fit
for this sort of keyboard.

You don't need to type commands and _then_ run them if the commands themselves
are the keys.

The advantage over concatenative languages like Forth is that if you assume a
graphical virtual keyboard from the start, you can also use a GUI to give you
instant feedback on the state of the log instead of guessing by keeping the
stack in your head.

All in all, this is circling back to keyboard terminals and session logs like
we do in our shells today.

The difference is that, instead of looking at graphics and thinking of a table
with papers shuffling around (thank you so much for that, Xerox PARC </s>),
you set yourself free from ASCII paint on the keyboard and ASCII paint on the
screen, _keep the 1D terminal metaphor_ , and help users figure out what's
possible through predictive typing (of which bash completion is an ugly
toothless old cousin) instead of statically patronizing them with a limited
set of options on a window.

The web has been moving in that direction. Twitter/FB news feeds are a command
prompt with a log where you see yours and other people's commands (only
"echo", unfortunately). WeChat, FB Messenger and Slack are all in on the "chat
everywhere" UI concept.

What screwed with the CLI was not the metaphor. We've been chatting with our
computers on the command line and it's great. The limitations were 1) in
command & syntax discoverability and 2) in the richness of content that could
be represented.

We fixed the latter with rich text popping up in our logs (Twitter was text-
only before it started embedding stuff), now we need to fix the former with
virtual predictive keyboards.

------
andrem
Reading through the documentation I was trying to get the naming conventions
or the tongue in cheek humor (which I presume is there).

Please make the emojis in the documentation code snippets clickable else it is
really hard to follow.

~~~
personjerry
They are selectable, aren't they?

Or did you mean something else?

~~~
foota
I believe he means make it so you can enlarge them by clicking.

------
jpt4
An enterprising contributor might enrich two worthy Open Source projects
simultaneously by writing a Hoon <-> Emojicode transpiler.

------
labster
Finally, a language whose syntax is impossible to discuss on HN. I think I'm
sticking to LOLCODE.

------
incepted
APL for the millennials!

------
dx4100
I had a nightmare strangely similar to this recently...

------
sanjeetsuhag
This makes me want to kill myself.

------
chm
Had to install pkg:unifont in Debian to see the emojis, if anyone's having the
same problem.

~~~
incepted
Nah, it only impacts people using lesser operating systems ;)

------
leonatan
I prefer ArnoldC:
[https://github.com/lhartikk/ArnoldC](https://github.com/lhartikk/ArnoldC)

------
hanniabu
This is actually a really interesting concept to use symbols to program. I'm
curious if somebody will expand Yoon this to make it more usable.

------
jnericks
this was inevitable

------
giancarlostoro
Wasn't there a lisp implementation using emojis before? I forgot the name of
it. This looks a little interesting I gotta admit.

~~~
kazinator
> I forgot the name of it.

Uh, "emojilisp".

[https://news.ycombinator.com/item?id=8342069](https://news.ycombinator.com/item?id=8342069)

~~~
giancarlostoro
I guess they named it as simple as possible, thanks!

------
dveeden2
And next is PL/Emojicode for PostgreSQL...

------
sandebert
How long before we have a javascript version of this? Surely it's already in
the making somewhere?

------
chillaxtian
hm

