山地人

[升级⚡️] 支持12种主流编程语言+1

山地人
山地人
2021-05-20

容器升级

对于学习编程,每个人都会有自己喜欢的编程语言。idev365作为一个面向所有开发者的学习平台。如果只支持少量的几种编程语言,那会会把想要通过idev365学习其他语言的小伙伴挡在了门外。

另外,山地人自己平时也会使用不同的编程语言进行学习和开发。在山地人的概念里,不同的编程语言有不同的特点和各自的价值,在语言上我对自己的设定是不要去排斥任何语言,而是去学习吸收不同语言的精华。

基于以上的种种原因,山地人决定对终端进行多语言支持。这样,不管是对自己的平时的学习,还是对idev365的其他用户都是有意义的一件事。

本次更新,容器已经支持主流编程环境中的大部分编程语言了,我把目前支持的编程语言/工具都罗列在下方。

Bash, C, C++, Go, Java, JavaScript(Node.js, Deno), Php, Python2/3, Rust, Ruby, R, Perl, Assembly(Nasm)

下面,我会以打印HelloWorld的形式,演示不同语言在终端容器中的使用方法。

Bash

直接在终端输入下面的命令运行。

echo "Hello World"

C

vim main.c创建一个c的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 编译源代码
gcc main.c -o hello-c.out
# 查看是否生成了a.out可执行文件
ls
# 运行生成的可执行程序 hello-c.out
./hello-c.out

C++

vim main.cpp创建一个c++的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 编译源代码
gcc hello.cpp -lstdc++ -o hello
# 查看是否生成了 hello 可执行文件
ls
# 运行生成的可执行程序 hello
./hello

Node.js

REPL交互模式

在终端输入node,启动node交互终端

console.log("Hello World");

ctrl+c 两次退出

非交互模式

vim hello.js创建一个javascript的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

console.log("Hello World");

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 运行生成的可执行程序 hello.js
node hello.js

Deno

REPL交互模式

在终端输入deno,启动deno交互终端

console.log("Hello World");

ctrl+c 两次退出

非交互模式

vim hello.js创建一个javascript的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

console.log("Hello World");

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 运行生成的可执行程序 hello.js
deno run hello.js

Php

vim hello.php创建一个php的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

<?php
echo "Hello World\n";

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,运行程序。

php hello.php

Python

对于python2,启动python交互终端

python

print "Hello World"

对于python3,启动python3交互终端

python3

print("Hello World")

Java

vim HelloWorld.java创建一个java的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

class HelloWorld {
static public void main( String args[] ) {
System.out.println( "Hello World!" );
}
}

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 编译源代码
javac HelloWorld.java
# 查看是否生成了a.out可执行文件
ls
# 运行生成的可执行程序 HelloWorld
java HelloWorld

Rust

vim hello.rs创建一个rust的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

fn main() {
println!("Hello World!");
}

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 编译源代码
rustc hello.rs
# 查看是否生成了a.out可执行文件
ls
# 运行生成的可执行程序 hello
./hello

Go

vim hello.go创建一个go的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

package main
import "fmt"
func main() {
fmt.Printf("Hello World\n")
}

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,编译运行程序。

# 直接运行
go run hello.go
# 编译源代码
go build hello.go
# 查看是否生成了a.out可执行文件
ls
# 运行生成的可执行程序 hello
./hello

Ruby

vim hello.rb创建一个ruby的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

puts "Hello World!"

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,运行程序。

ruby hello.rb

R

vim hello.R创建一个R的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

print("Hello world\n")

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,运行程序。

Rscript hello.R

Perl

vim hello.pl创建一个Perl的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

print("Hello, World!\n");

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,运行程序。

perl hello.pl

汇编

发布后又小伙伴提出想要增加汇编的能力,所以如果你使用了下面这个汇编的能力,请感谢群里那位提出需求的小伙伴。

vim hello.asm创建一个汇编的源代码。 按i键进入插入模式,复制下面的代码,到vim中。

section .text ;代码段
global _start
_start:
;输出字符串到stdout
mov edx,len ;第三个参数: msg长度
mov ecx,msg ;第二个参数: msg指向
mov ebx,1 ;第一个参数: 输出句柄 (stdout)
mov eax,4 ;系统调用号 (sys_write)
int 0x80 ;调用 kernel
;退出
mov ebx,0 ;退出码
mov eax,1 ;退出程序的系统调用号
int 0x80 ;调用 kernel
section .data ;数据段
msg db "Hello, world!",0xa ;字符串常量
len equ $ - msg ;字符串长度

ESC退出vim插入模式,按shift+:底部出现:后,按wq保存文件并退出。 使用下面的步骤,运行程序。

# 编译生成 hello.o
nasm -felf64 hello.asm
# 链接生成执行 hello
ld hello.o -o hello
# 执行
./hello

结束语

当然,如果你觉得还有需要容器支持的语言,可以把你想要支持的编程语言发到下面的交流群中。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。