zoukankan      html  css  js  c++  java
  • 【编程漫谈】Hello world!

    Hello world!是打开编程世界的第一把钥匙,只要你能运行出Hello world!,基本上就算入了个门了,因为程序正确的运行代表着基本开发环境都有了,包括编辑器,编译器,解释器,运行环境等待,同时你也知道了这个程序是如何运行起来,并且完成一次最简单的人机交互——运行程序 -> 返回一个结果。

    当然程序的运行是多种多样的,返回方式也各不相同的。比如有的弹窗,有的黑窗口,有的显示在网页里,有的写在文件里,有的传到网络上……但万变不离其宗,返回的结果的地方统称为输出设备。不过通常呢,我通常以显示器为输出设备,因为,有的显示在网页里到显示器是立即显示的,不需要其实手段打开输出的内容,再显示到屏幕上。同理,保存文件的地方就是文件设备,传输网络数据的就叫网络设备。当然,这里设备并不是指具体的东西,而是一个抽象的逻辑概念,是一个统称。

    我们在写第一个PC程序(像单片机之类大多数不带输出设备,没存储、没显示,所以这里强调是PC程序)的时候,往往是在黑窗口中进行的,这个黑窗口是电脑在显示器上输入输出内容的一种形式,在windows下往往是一个叫cmd.com(或.exe)的程序,在linux下是一个叫bash的东西,这种黑窗口只显示文本,最多可是定制一下字体。黑窗口本身也是一个可以编程的环境,你可以在提示符下直接敲入脚本,这时我们可以编写第一个“Hello World!”来。

    我们windows的黑窗口里输入:

    echo  Hello World! 
    

    返回结果:

    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!");
    

    保存。然后双击文件,便得到如下效果。

    WSH

    其实写到这里依然有很多人觉得,这还是算不上是编程。这是为什么呢?大概是因为这两个例子都没有编译的过程。因为以前写的程序,并不能直接使用,而是要编译成机器所认识的二进制,编译就是程序语言所写的东西,翻译成二进制代码指令。比如用C写一个Hello World!。为了方便,操作系统使用的是Linux(Windows下边对IDE依赖太严重),Linux下自带GCC,先用vi编辑一个叫hello.c的文件。内容如下:

    #include <stdio.h>
    
    void main(){
    printf("Hello World!
    ");
    }
    

    保存,退出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:devmydemo> 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:devmydemo> ./hello.exe
    Hello World!
    
    PS E:devmydemo>
    

    .net版本的Hello World

    C语言的Hello World!

    C语言的Hello World!

    Go语言的Hello World!

    Go语言的Hello World!

  • 相关阅读:
    剑指offer55. 平衡二叉树
    剑指offer52. 两个链表的第一个公共节点
    LC1043. Partition Array for Maximum Sum
    剑指offer40. Top K
    剑指offer39. 数组中出现次数超过一半的数字
    剑指offer36.将BST原地转换为双向循环链表
    判断大小端
    CentOS安装RabbitMQ 3.8.9
    Nginx 413 Request Too Large 错误
    NginxPC端和移动端区分
  • 原文地址:https://www.cnblogs.com/icoolno1/p/11335233.html
Copyright © 2011-2022 走看看