【编程漫谈】Hello world!
Hello world!是打开编程世界的第一把钥匙,只要你能运行出Hello world!,基本上就算入了个门了,因为程序正确的运行代表着基本开发环境都有了,包括编辑器,编译器,解释器,运行环境等待,同时你也知道了这个程序是如何运行起来,并且完成一次最简单的人机交互——运行程序 -> 返回一个结果。
当然程序的运行是多种多样的,返回方式也各不相同的。比如有的弹窗,有的黑窗口,有的显示在网页里,有的写在文件里,有的传到网络上……但万变不离其宗,返回的结果的地方统称为输出设备。不过通常呢,我通常以显示器为输出设备,因为,有的显示在网页里到显示器是立即显示的,不需要其实手段打开输出的内容,再显示到屏幕上。同理,保存文件的地方就是文件设备,传输网络数据的就叫网络设备。当然,这里设备并不是指具体的东西,而是一个抽象的逻辑概念,是一个统称。
我们在写第一个PC程序(像单片机之类大多数不带输出设备,没存储、没显示,所以这里强调是PC程序)的时候,往往是在黑窗口中进行的,这个黑窗口是电脑在显示器上输入输出内容的一种形式,在windows下往往是一个叫cmd.com(或.exe)的程序,在linux下是一个叫bash的东西,这种黑窗口只显示文本,最多可是定制一下字体。黑窗口本身也是一个可以编程的环境,你可以在提示符下直接敲入脚本,这时我们可以编写第一个“Hello World!”来。
我们windows的黑窗口里输入:
echo Hello World!
返回结果:
Hello World!
不过肯定有人说,这算什么Hello World!,这算什么编程。但我觉得,编程就是这样的,只要可以写代码操控计算机的行为,都可以称为编程。只是说,没人用命令行的脚本代码去构建庞大的应用系统,但它可以作为一个系统的子集,比如控制一些程序的启动,对系统进行一些批量操作什么的,也是可以实现一定功能的。
对于Windows,cmd的脚本语法着实反人类,早期程序员发明的东西,几十年来就没变过,奇奇怪怪的关键字,法语规则,面向过程的设计,都非常的搞脑子。所以后来,微软了个WSH来代替命令行(Linux下可以用python,php,perl等脚本语言来代替bash)。
Javascript(简称js)是个非常流行的语言,广泛用于Web应用上。所以我用js写了一个Hello World!。js的Hello World!跟cmd的一样简单,甚至还干净一点。我们先创建一个hello.js文件,用文本编辑器打,在里边敲入如下一行代码:
WScript.Echo("Hello World!");
保存。然后双击文件,便得到如下效果。
其实写到这里依然有很多人觉得,这还是算不上是编程。这是为什么呢?大概是因为这两个例子都没有编译的过程。因为以前写的程序,并不能直接使用,而是要编译成机器所认识的二进制,编译就是程序语言所写的东西,翻译成二进制代码指令。比如用C写一个Hello World!。为了方便,操作系统使用的是Linux(Windows下边对IDE依赖太严重),Linux下自带GCC,先用vi编辑一个叫hello.c的文件。内容如下:
#include <stdio.h>
void main(){
printf("Hello World!\n");
}
保存,退出vi,进行控制台,输入命令:
gcc main.c
ls
然后就会发现,当前目录下多了一个a.out的文件。然后运行:
./a.out
得到运行结果:
Hello world!
a.out就是一个二进制程序。用普通的文本编辑器打开是一堆乱码,只有用支持二进制编辑的程序打开,才看到是一堆无法理解的数字。
其实这种编译式的程序开发,比前边的写脚本要多一道步骤,所以从情怀上来讲,编译开发确实比较正统,但现在脚本语言的势头却是越来越猛,这种老式的编程方式,有时成了人类进步的障碍。
不过走极端都不是什么好事情,其实主流的是介于纯脚本和编译之间的虚拟机技术。典型的有java和.net。它们看上去跟古老的编程方式一至,但实际编译出来的东西并不能直接运行在机器上,它们编译出来的是一种供虚拟机认识的代码,然后再解释执行。比如java的.class类,你用文本编辑器打之后,发现里边并完全是乱码。再来段Java版的Hello World!
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
上述内容保存到一个叫Hello.java的文件里,然后命令行里运行:
javac Hello.java
得到Hello.class,运行Hello:
java Hello
运行结果请自尝试啊。
这里要注意的是,一般电脑上不会自带java的运行环境,需要到Oracle或OpenJdk的网站下载安装程序并安装,并把程序的Bin目录设置到环境变量PATH下边,这样才可以正常运行java的各种命令。
.Net与java同理。不过,.net是多语言编程环境,通常是用C#。C#的代码结构与java的大同小异。C#程序需要安装.net framework。.net并不要求文件名与类名相同。
C#的Hello World!
using System;
public class program
{
public static void main()
{
Console.WriteLine("Hello,World");
Console.ReadLine();
}
}
附——Hello World!一站式体验。
准备工作
除了批处理程序,其他的或多或少都要安装一些编译和运行的环境。
1、安装Visual Studio Code
Visual Studio Code 下载页面:https://code.visualstudio.com/
2、安装JDK
JDK下载页面:https://www.oracle.com/technetwork/java/javase/downloads/index.html
3、安装.Net Framework
.Net Framework下载页面:https://dotnet.microsoft.com/download/dotnet-framework/net472
4、安装 mingw
mingw下载页面:https://osdn.net/projects/mingw/releases/
5、安装PHP
PHP下载页面:https://www.php.net/downloads
6、安装Python
Python下载页面https://www.python.org/downloads/release/python-374/开始体验
在电脑磁盘上随便创建一个文件夹
在vs code中打开
创建一个hello.cs的文件,内容如下
using System;
public class program
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}
按CTRL+SHIFT+~,就会在vs code 下方弹出一个黑窗口。
用鼠标点一下黑窗口,然后输入:
csc hello.cs
hello.exe
输出内容:
PS E:\dev\my\demo> csc hello.cs
Microsoft (R) Visual C# Compiler version 4.7.3190.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
PS E:\dev\my\demo> ./hello.exe
Hello World!
PS E:\dev\my\demo>
C语言的Hello World!
Go语言的Hello World!
【编程漫谈】Hello world!的更多相关文章
- .net 4.0 面向对象编程漫谈基础篇读书笔记
话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...
- C语言编程漫谈——main函数
写在前面 促使我写这篇文章是因为我这几天找了几个一样是大三的同学,与我相同专业相同方向(物联网)的人,除了@小胡同的诗,基本没有什么其他人会现在看起来很简单的编程题目了.问了一下其他同学,他们大部分都 ...
- 【编程漫谈】PHP
PHP是个很古老的脚本技术了,当年CGI比较让人诟病,于是PHP横空出世.PHP即写即用特性,吸引了一大批粉丝,而且类似C语言的编程风格,让那些C程序员非常容易地转到这个平台上来.当然PHP刚出来的时 ...
- 【编程漫谈】用JAVA画多边形
一门语言只要带图形库就可以编程画图了,用JAVA画图有两种方式,一是在内存中画好然后生成图片,就可以看到画图的效果了.另一个就是在窗口界面上直接画,可以实时看到程序的运行效果.刚开始学编程的时候,我加 ...
- 编程漫谈(二十):如何自学编程及Java、上手真实开发及转行程序员的建议
前路漫漫,吾将上下而求索! 最近有时在知乎上逛逛,发现很多人对自学编程及转行程序员有困惑.我是在25岁读研时转程序员,正赶上好时候(中国云计算刚刚起步及移动互联网正红的阶段),同时又走了不少弯路,因此 ...
- 【转载】C#之int与Java之Integer的区别
本文涉及到一些JVM原理和Java的字节码指令,推荐感兴趣的读者阅读一本有关JVM的经典书籍<深入Java虚拟机(第2版)>,将它与我在<.NET 4.0面向对象编程漫谈>中介 ...
- 斗地主你什么时候才会托管?(.NET中的托管于非托管)
文章部分引自<.NET4.0面向对象编程漫谈(基础篇)>第1章.NET面向对象编程基础(作者:金旭亮) 无意间看到一位四五岁左右小朋友在玩斗地主,总开始到结束,她一直都在使用“提示”(托管 ...
- 3000本IT书籍下载地址
http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑 ...
- 终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐
我之前的面试题停了很久,是因为 - 我写书去了. 前言 我于2012年3月开始工作,到现在马上就满六年了.这六年里,我从一个连Sql server是什么都不知道,只会写最简单的c#的程序员开始做起,一 ...
随机推荐
- Slimvoice能代替JavaScript?
对于Slimvoice(https://slimvoice.co/),我想反对JavaScript的炒作,并对整个应用程序进行服务器端渲染.您可能会说:“用户必须在使用应用程序时重新加载每个页面,这必 ...
- vue实现登录路由拦截
第一步 在router.js里面 把需要判断是否登录的路由添加meta对象属性 在meta对象里面自定义一个属性值 第二步 : 在router.js里面 与const router = new Rou ...
- RAD Studio 10 up1欢迎页证书不可用
不只是欢迎页,每打开一个新的工程,都会出现上面那个证书不可用的提示. 解决方法: 1.通过Fiddler网络监控软件分析发现,出现这个问题的原因是bds启动的时候会用https协议访问谷歌的统计服务器 ...
- 使用shell脚本自动打包上传 fir.im
http://blog.csdn.net/wang631106979/article/details/52299083
- Linux添加虚拟网卡的多种方法
Linux添加虚拟网卡的多种方法有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡: ...
- C#将html table 导出成excel实例
public void ProcessRequest (HttpContext context) { string elxStr = "<table><tbody>& ...
- HihoCoder1087Hamiltonian Cycle(DP状态压缩)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given a directed graph containing n vertice (numbered from 1 ...
- 红帽Linux故障定位技术详解与实例(3)
红帽Linux故障定位技术详解与实例(3) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行 ...
- 手机端css实现active伪类
今天遇到手机端的css中a标签的active不起作用,原本想循环a标签,给当前的a标签添加class来解决,可觉得有点儿小麻烦,经查资料了解到解决此问题,只需要添加一个touchstart的空事件即可 ...
- 什么是Web Service(Web服务)?
从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.例如可以创建一个提供天气预报的Web Service,那么无论你用哪种编程语言开发的应用都可以通过 ...