hello world
最近上午下午都在搞ACM,晚上实在不想做题,就打起了其他编程语言的主意。虽然编程的水平不能用通晓的编程语言数目来衡量,但多接触一些其他类型的编程语言也可以增长见识,开阔视野,了解一下计算机语言的发展进程。
初步打算是利用helloworld这个著名的程序来体验一下,各种语言的helloworld程序也比较容易查询,更难的其实是编程环境的配置。
工具软件#
编辑器:#
- SublimeText3,通过更改SublimeText3中的build系统实现多种语言的快速编译。
编译器:#
目前实现的有:(点击可跳转到实现部分)
C、C++、Pascal、Markdown、LaTeX、Html、JavaScript、PHP、Java、Python、Batch、Shell、R、Ruby、Perl、Lua、Ada、Fortran、Lisp
- C 和 C++ :mingw-w64
mingw-w64下载链接 - HTML:任何网页浏览器即可打开。
Firefox 火狐浏览器 - JAVA:jdk和jre,jre为运行环境,jdk为开发环境
Java SE Runtime Environment 8 Downloads
Java SE Development Kit 8 Downloads
点击Accept License Agreement后即可下载。 - Markdown:找单独的渲染器实在麻烦,采用SublimeText3插件运行
编辑:MarkdownEditing
预览(转换为Html):OmniMarkupPreviewer - LaTeX:texlive
Acquiring TeX Live as an ISO image - Pascal:Free Pascal
fpc-3.0.4.i386-win32.exe - Python:Python2和Python3
Python 3.7.2
Python 2.7.15 Windows x86-64 MSI installer - Batch:cmd
windows系统自带 - Shell:git bash
Git for Windows (2.20.1) 64-bit version - JavaScript:Node.js
nodejs LTS10.15.0 长期支持版 - Fortran:G95 compiler
g95-Mingw_2012120 - Ada:Mingw gnatlink(C++安装的即可编译)
- Lua:Lua for Windows
Lua for Windows v5.1.5-52 Released - Ruby: RubyInstallers
Ruby+Devkit 2.5.3-1 (x64) - Perl:Strawberry Perl
Strawberry Perl 5.28.1.1 (64bit) - PHP:为了方便使用了wnmp安装包
Windows, Nginx, MariaDB & PHP(Wnmp) - R
R-3.5.2 for Windows (32/64 bit) - Lisp: CLisp
CLISP - an ANSI Common Lisp
实现#
能实现读入功能的语言就实现读入一个整数n
,输出n
行hello world!
,其余就展示hello world!
。
命令的执行一般都需要把可执行文件添加到环境变量PATH中。
C#
非常常见,使用广泛,能进行底层开发,操作系统内核基本都是用C语言写的。C语言接近汇编,可以通过指针操控内存,因此速度非常快,可移植性也好。缺点在于初学往往不知道学了能干嘛,很难用C语言写出一个漂亮的程序界面,但用来学习算法和数据结构非常好。
hello.c
1 |
|
编译运行命令:gcc hello.c -o hello & hello
C++#
C语言的一个超集,在C语言的基础上添加了许多功能,最主要的就是面向对象的支持,功能繁杂全面。学习C++有一定难度,但C++在编程语言中非常有代表性。这也是我目前唯一比较了解的编程语言。(C++最强,不接受反驳)
hello.cpp
1 |
|
编译运行命令:g++ hello.c -o hello & hello
Pascal#
我第一个学习的语言,当时用的是Turbo Pascal。Pascal的主要特点就是结构比较严谨,Pascal主要是一个教学向的语言,或许由于C等语言的流行或是其他一些原因,已经很少有人用了。
hello.pas
1 | program hello; |
编译运行命令:fpc hello.pas & hello
Markdown#
一种非常简单的标记语言,常用在博客,笔记,留言,帮助文档中,可以用少量的语法来进行文字排版标记,这篇博客也是用Markdown写的。我认为Markdown主要是用来简化html的繁琐标记,使得可读性更强。
hello.md
1 | # hello world |
LaTeX#
专业的排版系统,尤其是对于复杂的数学公式,使用也很广泛,学术论文排版经常用到。
hello.tex
1 | \documentclass{article} |
Html#
超文本标记语言,一般的网页所呈现的效果就是浏览器渲染html文件形成的。
hello.html
1 |
|
用浏览器打开即可。
JavaScript#
网络脚本语言,一般内嵌在html里用来实现网页的动态内容,也可单独执行。常常用来写网页脚本,一般运行在浏览器里。这里利用nodejs直接运行。
hello.js
1 | process.stdin.on('readable', () => { |
运行命令:node hello.js
PHP#
同样是脚本语言,不过一般运行在服务器,许多入侵服务器都是利用的PHP语言的漏洞,比如一句话木马:<?php @eval($_POST[value]);?>
hello.php
1 |
|
运行命令:php hello.php
Java#
许多企业用的开发语言,C++改造而来,更强化了面向对象的概念,C++实质还是和C一样,用函数组织程序,而Java直接改用对象组织程序。
hello.java
1 | import java.util.Scanner; |
编译运行命令:javac hello.java & java hello
Python#
非常流行的一种编程语言,简单易学又功能强大,可供调用的包很多。因此往往很短的代码就能实现很高级的功能。但我感觉Python不利于理解程序底层原理,而且运行速度慢,但确实很实用。目前我有时用Python写一写数据生成器来对拍(主要是其他高级的功能也不会)。
hello.py
1 | n=int(input()) |
运行命令:python hello.py
Batch#
其实就是windows下的批处理文件,功能虽说比不上C等编程语言,但用来处理windows相关的问题非常好用,如删除文件夹内所有exe文件:del /s *.exe
,从文件输入输出:program.exe < input.txt > output.txt
。目前偶尔用来写对拍程序。
hello.bat
1 | @echo off |
运行命令:hello.bat
Shell#
linux下的批处理,常用的解释器有bash,由于在windows下运行,就不加#!/bin/bash
了。
hello.sh
1 | read n |
运行命令:bash hello.sh
R#
多用于统计分析绘图。由于一些其妙的问题,读入只能暂时先放在源代码里了。
hello.r
1 | n<-scan(what=integer(0)) |
运行命令:rscript hello.r
Ruby#
完全面向对象的脚本语言。
hello.ruby
1 | n=gets.to_i |
运行命令:ruby hello.ruby
Perl#
特点是内部集成了正则表达式,想来擅长字符串处理?
hello.pl
1 | $n=<STDIN>; |
运行命令:perl hello.pl
Lua#
速度快、小巧的脚本语言,很容易嵌入其他语言中使用。
hello.lua
1 | n=io.read("*n") |
运行命令:lua hello.lua
Ada#
第一次听说Ada是在一场CTF比赛中把最佳女生奖称为Ada奖。这才知道世界上第一位程序员是Ada Lovelace,而且是女性。以后Ada就是我女神
为了纪念她,美国国防部花费巨资研制出用于军事系统开发的Ada语言,据称是迄今为止最复杂,最完备的软件工具。
资料实在缺乏,故没有写读入。
Ada Reference
hello.adb
1 | with Ada.Text_IO; |
编译运行命令:gnatmake hello.adb & hello
Fortran#
世界上第一种高级编程语言,至今仍然活跃在科学计算等领域中。
采用古老的固定格式写法,空六格真是经典。
hello.for
注意代码前有6个半角空格,这里为了显示用了3个全角空格。
1 | PROGRAM HELLO |
编译运行命令:gfortran hello.for -o hello & hello
Lisp#
超奇妙古怪古老神秘自由非凡的一种语言,貌似用在人工智能领域。
hello.lisp
1 | (defun hello () |
放到最后就是压轴的。
其实是还没搞好编译运行问题
hello world