Emoji也能写代码?来看看Emojicode

4,751 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

作者: 千石
支持:点赞、收藏、评论

闲逛Github,发现一个很好玩的项目,因此做一个记录和大家分享

正文

介绍

官方简介

Emojicode is an open-source, full-blown programming language consisting of emojis.

DeepL翻译

Emojicode是一种开源的、完全由表情符号组成的编程语言。

有句话说得好:百闻不如实践。让我们来尝试使用这个编程语言

环境搭建

Tips:由于这个项目不兼容Windows,所以如果你想在Windows平台上进行开发,请考虑使用WSL或者其他Linux虚拟机,官方推荐使用WSL,笔者可点击链接查看教程

链接:安装 WSL | Microsoft Learn

在这里,笔者使用WSL2(Ubuntu20.04)进行演示

image.png

安装C++环境

在安装Emojicode之前,需要一个C++编译器和链接器,这样Emojicode的编译器链接二进制文件。

这里笔者选择安装Ubuntu的build-essentialgdbcmake软件包

// 一步步执行命令
sudo apt update
sudo apt upgrade
sudo apt install build-essential gdb libncurses5 -y
sudo apt install cmake -y

如果遇到软件包安装缓慢的情况,可以尝试替换国内的镜像源后再次尝试安装

以清华大学开源软件镜像站为例:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

image.png
// 替换指令如下,请逐行复制粘贴执行
// Tips:如果你的Ubuntu版本不是20.04,可以在上面的链接里选择你对应的版本
// 下面的指令对应20.04版本
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

C++环境检测

执行以下命令,如果正确输出版本号,则说明依赖安装成功

gcc --version
g++ --version
gdb -- version
cmake --verson
image.png

安装Emojicode

官方提供了命令方便我们进行安装,选择你对应系统的命令即可

For Linux:

wget https://github.com/emojicode/emojicode/releases/download/v1.0-beta.2/Emojicode-1.0-beta.2-Linux-x86_64.tar.gz -O emojicode.tar.gz \
&& tar -xzf emojicode.tar.gz && rm emojicode.tar.gz \
&& cd Emojicode-1.0-beta.2-Linux-x86_64 && ./install.sh \
&& cd .. && rm -r Emojicode-1.0-beta.2-Linux-x86_64

For macos

curl -o emojicode.tar.gz -L https://github.com/emojicode/emojicode/releases/download/v1.0-beta.2/Emojicode-1.0-beta.2-Darwin-x86_64.tar.gz \
&& tar -xzf emojicode.tar.gz && rm emojicode.tar.gz \
&& cd Emojicode-1.0-beta.2-Darwin-x86_64 && ./install.sh \
&& cd .. && rm -r Emojicode-1.0-beta.2-Darwin-x86_64

安装过程中可能会让你同意协议或者输入管理员密码,按y或者输入密码即可

由于安装过程需要在GitHub下载文件,如果你的网络状况不佳可以尝试使用代理或者将命令中GitHub域名替换为镜像域名后进行安装

image.png

官方也提供了编译安装的选择,在Github上下载release里的文件后解压执行install.sh即可

链接:github.com/emojicode/e…

tar -xzf File_Name.tar.gz
cd File_Name
./install.sh

对于使用Arch Linux的读者:安装详见AUR (en) - emojicode (archlinux.org),由于笔者不使用Arch Linux,该平台下的安装这里不做展开

远程开发(可选)

由于Wsl默认没有图形界面,为了方便开发,这里使用VS Code进行远程开发(别问为什么不用JetBrains系的IDE,因为太吃内存了,我目前写作的电脑是surface go 3中配,懂得都懂)

首先安装VS Code,根据官方按照提示下载安装即可

链接:Visual Studio Code - Code Editing. Redefined

image.png

如果下载缓慢可以尝试使用下面的镜像进行下载,以下面的链接为例,将域名替换为https://vscode.cdn.azure.cn即可:

官方链接: az764295.vo.msecnd.net/stable/97de…

镜像链接:vscode.cdn.azure.cn/stable/97de…

安装软件后,参考这篇文档进行配置即可:开始通过 WSL 使用 VS Code | Microsoft Learn

image.png

语法介绍

基本结构

🏁 🍇

🍉

这是每个程序必须具备的基本结构。在我的理解中,🏁 相当于缩进,🏁 之后是一个代码块。每个代码块都以🍇 开头并且以🍉 结尾。

当程序运行时,执行🏁后的代码块。

字符串的表示

🔤Hey!🔤

在两个🔤之间的每个字符都是字符串的一部分。(我的理解是相当于引号)

打印

🏁 🍇
  😀 🔤Hey!🔤❗️
🍉

😀方法会把字符串打印到标准输出。

TipsEmojicode的方法的调用实际上是通过把它的表情符号放在你想调用该方法的对象之前,然后我们也可以提供参数。

❗可以终止参数的读取。

列表

🏁 🍇
  🍿 🔤Hey!🔤 🔤Hi!🔤 🔤Howdy!🔤 🔤Aloha!🔤 🍆 ➡️ list
🍉

🐽是用来访问列表中某个元素的方法。和大多数编程语言一样,在Emojicode中,列表中第一个元素的索引是0。

🐹 随机输出

🏁 🍇
  🍿 🔤Hey!🔤 🔤Hi!🔤 🔤Howdy!🔤 🔤Aloha!🔤 🍆 ➡️ 🖍️🆕list
  🐹 list❗️
  😀 🐽list 0❗️❗️
🍉

字典

字典的映射:

🏁 🍇
  🍿
    🔤fr🔤 ➡️ 🔤Salut!🔤
    🔤it🔤 ➡️ 🔤Ciao!🔤
    🔤de🔤 ➡️ 🔤Guten Tag!🔤
    🔤en🔤 ➡️ 🔤Hey!🔤
    🔤es🔤 ➡️ 🔤Hola!🔤
  🍆 ➡️ dictionary
🍉

字典的访问:

🏁 🍇
  🍿
    🔤fr🔤 ➡️ 🔤Salut!🔤
    🔤it🔤 ➡️ 🔤Ciao!🔤
    🔤de🔤 ➡️ 🔤Guten Tag!🔤
    🔤en🔤 ➡️ 🔤Hey!🔤
    🔤es🔤 ➡️ 🔤Hola!🔤
  🍆 ➡️ dictionary
  ↪️ 🐽dictionary 🔤de🔤❗️ ➡️ greeting 🍇
    😀 greeting❗️
  🍉
🍉

命令行参数:

🏁 🍇
  🍿
    🔤fr🔤 ➡️ 🔤Salut!🔤
    🔤it🔤 ➡️ 🔤Ciao!🔤
    🔤de🔤 ➡️ 🔤Guten Tag!🔤
    🔤en🔤 ➡️ 🔤Hey!🔤
    🔤es🔤 ➡️ 🔤Hola!🔤
  🍆 ➡️ dictionary
  🎞🐇💻❗️ ➡️ args
  ↪️ 🐽dictionary 🐽args 1❗️❗️ ➡️ greeting 🍇
    😀 greeting❗️
  🍉
🍉
image.png

代码实战

现在,Emojicode的编程环境已经搭建好了,让我们来编写我们的第一个代码

如果你使用vscode,推荐安装这个插件,以方便我们的开发

image.png

Hello World

俗话说,万物基于Hello World,让我们来尝试编写代码输出Hello World

  1. 在vscode或者终端创建一个.emojic后缀的文件
  2. 输入代码
🏁 🍇
  😀 🔤Hello World!🔤❗️
🍉
  1. 编译
emojicodec hello.emojic

此时你的目录下面会多两个文件,分别是hellohello.o

image.png
  1. 执行生成的二进制文件
image.png

最后

总结

本文介绍了Emojicode这个编程语言,以及如何配置Emojicode的开发环境,介绍了Emojicode的语法,并且使用Emojicode编写程序并输出了Hello World