全民学编程之 Hello World

问题的提出

相传古时候有个退休的程序员,在家闲来无事,决定修习书法之道。第一日,备好笔墨纸砚,便挥毫写下一行大字:“Hello World”。

学过编程语言的人都笑了,在程序员心目中,hello world是一切的开始,程序语言教科书的第一个演示程序、WordPress的第一篇示例文章(我的hello world)、环境搭建成功后的第一个测试……

可是,为什么呢?为什么都用“Hello World”来做程序语言的入门程序,以及其他这一切的开始呢?

Hello World 起源

可能还需要解释一下什么是“Hello World”:Hello World是一个简短的小程序,其功能是在显示设备上输出一行“Hello World”。几乎每一个程序设计语言的教材中的第一个范例都是hello world程序,因此在学习一门新语言的时候用hello world作为起步已经成为计算机程序界的一个传统。

Hello World的起源要追溯到1972年,贝尔实验室著名研究员Brian Kernighan在撰写“B语言教程与指导(Tutorial Introduction to the Language B)”时初次使用(程序),这是目前已知最早的在计算机著作中将hello和world一起使用的记录。之后,在1978年,他在他和Dennis Ritchie合作撰写的C语言圣经“The C Programming Language”中,延用了“Hello World”句式,作为开篇第一个程序。在这个程序里,输出的”Hello World”全部是小写,没有感叹号,逗号后有一空格。虽然之后几乎没能流传下来这个最初的格式,但从此用Hello World向世界打招呼成为惯例。

hello,world

有趣的是,如果你去看Brian Kernighan的wiki页面,他成果列表里的第一条,不是《C程序语言》,不是《UNIX编程环境》,而是看似不起眼的“Hello World”。

迷恋 Hello World

Hello World的迷人之处在于:它是简单的,即便没有任何基础,你也可以轻松理解,但它又不是苍白的,它带有一个程序语言鲜明的特色,体现了该语言最基本的思想和特征。同样也是Hello World,让人体会到第一份成功的喜悦。

今天开始“全民学编程”的第一课,为了遵循编程界的伟大传统,我们也不能免俗。 第一个程序,教大家怎么写 Hello World,也体验一下计算机的神奇之处。

"Hello World"程序是指在计算机屏幕上输出“Hello, world”这行字符串的计算机程序,“hello, world”的中文意思是“世界,你好”。这个例程在Brian Kernighan 和Dennis M. Ritchie合著的《The C Programme Language》使用而广泛流行。因为它的简洁,实用,并包含了一个程序所应具有的一切,因此为后来的编程类图书的作者提供了范例,一直待续到今。

今天的 Hello World程序,用 9 种计算机语言写成,大家可以点击代码行中的“练练手”来试试看,可以在线运行,并且可以试着修改输出的文字。 为什么要用 9 种语言呢,既然是 Hello World 这样简单的程序,我们就多用几种语言来写,让大家体验一下。后面的正式教学中,我们将分专题教学,而不会 一下子用多门语言,今天就算这些语言跑出来,集体和大家打个招呼啦!

JavaScript:

练练手

代码如下:

document.write("Hello, world!");

console.log("Hello, world!"); 
具体可以参考这篇文章 http://www.jb51.net/article/30469.htm

PHP:

练练手

代码如下:

echo "Hello, world!";

Java:

练练手

代码如下:

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

Objective-C:

练练手

代码如下:

#import <Foundation/Foundation.h>
 int main(int argc, char **argv){
 NSLog(@"Hello, world!");
 return 0;
 }

C:

练练手

代码如下:

#include <stdio.h>
 int main(int argc, char **argv){
 printf("Hello, world!");
 return 0;
 }

HTML:

练练手

代码如下:

<h1>Hello, world</h1>

Python:

练练手1

代码如下:

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

Ruby:

练练手

代码如下:

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

Go:

练练手

代码如下:

package main
import "fmt"func main() {
 fmt.Println("Hello, world!")
 }

今天我们关于 Hello World 的学习就到这了,有意思吧!欢迎多多体验,并继续关注优才网公共账号《全民学编程》为您推出的系列微课程。

(0)

相关推荐

  • hello world程序集锦

    hello world作为所有编程语言的起始阶段,占据着无法改变的地位,所有中/英/法/德/美--版本的编程教材中,hello world总是作为第一个TEST记录于书本之中,所有的编程第一步就在于此了!经典之中的经典! hello world! "Hello, world"程序是指在计算机屏幕上输出Hello, world这行字符串的计算机程序,"hello, world"的中文意思是"世界,你好".这个例程在Brian Kernighan和D

  • 使用angular写一个hello world

    angularjs遵循MVC模式,惯例来一个hello world吧 复制代码 代码如下: <html ng-app> <head>     <script type="text/javascript" src="angular.min.js"></script>     <script type="text/javascript" src="controllers.js"

  • 从零学Python之hello world

    简单的'Hello World!' Python命令行 假设你已经安装好了Python, 那么在Linux命令行输入: 复制代码 代码如下: $python 将直接进入python.然后在命令行提示符>>>后面输入: 复制代码 代码如下: >>>print('Hello World!') 可以看到,随后在屏幕上输出: 复制代码 代码如下: Hello World! print是一个常用函数,其功能就是输出括号中得字符串. (在Python 2.x中,print还可以是一

  • AngularJS入门教程之Hello World!

    开始学习AngularJS的一个好方法是创建经典应用程序"Hello World!": 1.使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html. 2.将下面的源代码复制到您的HTML文件. 3.在web浏览器中打开这个HTML文件. 源代码: 复制代码 代码如下: <!doctype html> <html ng-app>     <head>         <script src="http://c

  • Go语言hello world实例

    在开始编写应用之前,我们先从最基本的程序开始.就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始.因此,在本节中,我们要学习用最基本的语法让Go程序运行起来. 程序 这就像一个传统,在学习大部分语言之前,你先学会如何编写一个可以输出hello world的程序. 准备好了吗?Let's Go! 复制代码 代码如下: package main import "fmt" func main() {     fmt.Printf("Hello, world or 你好,

  • Android 初识 Helloworld 详解

    HelloWorld的目录结构有: src:存放应用程序的逻辑代码,这里面的代码是人工写的gen:存放资源代码,这里面的代码是自动生成的assets:存放mp3等视频资源bin:生成的可执行的二进制文件目录libs:引用到的库,这里和bin/dexedLibs里面的目录是一致的res:资源文件.往这个目录添加资源的时候,会被gen/R.java自动记录,自动那个记录到R.java中去.AndroidManifest.xml:项目的总配置项,记录应用中使用到各种全局的配置ic_launcher-w

  • Cocos2d-x中调用Lua及HelloWorld.lua源码分解

    Lua脚本,以前我不知道它有多强大,但是当我做了1年的手机网游之后,起码我发现了,更新客户端是一件很恐怖的事情(会导致大量玩家的流失,以及有一个漫长并且惊心动魄的审核过程),太扯了.于是,如果可以只更新脚本,那就不需要玩家重新下载客户端了,直接在线更新,嗯嗯,虽然我发现了这个,但是还没有实现.噗,代码写烂了,不好改.   所以啊,我已经做好准备了,如果下次用cocos2d-x开发,lua不可少啊~!   看看官方的例子吧,先来AppDelegate.cpp的applicationDidFinis

  • 全民学编程之 Hello World

    问题的提出 相传古时候有个退休的程序员,在家闲来无事,决定修习书法之道.第一日,备好笔墨纸砚,便挥毫写下一行大字:"Hello World". 学过编程语言的人都笑了,在程序员心目中,hello world是一切的开始,程序语言教科书的第一个演示程序.WordPress的第一篇示例文章(我的hello world).环境搭建成功后的第一个测试-- 可是,为什么呢?为什么都用"Hello World"来做程序语言的入门程序,以及其他这一切的开始呢? Hello Wor

  • Python网络编程之TCP套接字简单用法示例

    本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而java则一知半解,C写起来又麻烦,所以一直都没有真正实现过TCP套接字编程. 最近学习了python,而用它来写套接字又十分方便简单,所以当然要试一试咯. 下面根据代码来介绍一下最简单的tcp程序,由客户端输入数据,发送给服务器,服务器加上时间后返回给客户端 #!/usr/bin/python 'test TCP server' from socke

  • 深入分析Java并发编程之CAS

    在Java并发编程的世界里,synchronized 和 Lock 是控制多线程并发环境下对共享资源同步访问的两大手段.其中 Lock 是 JDK 层面的锁机制,是轻量级锁,底层使用大量的自旋+CAS操作实现的. 学习并发推荐<Java并发编程的艺术> 那什么是CAS呢?CAS,compare and swap,即比较并交换,什么是比较并交换呢?在Lock锁的理念中,采用的是一种乐观锁的形式,即多线程去修改共享资源时,不是在修改之前就加锁,而是乐观的认为没有别的线程和自己争锁,就是通过CAS的

  • 详解Python GUI编程之PyQt5入门到实战

    1. PyQt5基础 1.1 GUI编程学什么 大致了解你所选择的GUI库 基本的程序的结构:使用这个GUI库来运行你的GUI程序 各种控件的特性和如何使用 控件的样式 资源的加载 控件的布局 事件和信号 动画特效 界面跳转 设计工具的使用 1.2 PyQT是什么 QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面.这些服务包括定位和定位服务.多媒体.NFC和蓝牙连接.基于Chromium的web浏览器以及传统的UI开发.PyQt5是Qt v5的一组完整的Python

  • Shell编程之/bin/bash和/bin/sh的区别浅析

    目录 前言 正题 注意 补充:docker容器使用/bin/bash命令 总结 前言 早期,学过shell的5种启动方式,学的没有那么深入.从而导致了想深究一下docker exec 命令为什么tomcat容器用/bin/bash,nginx容器却用/bin/sh,被这个问题,折腾了半天! 从/bin/bash,就是进入不了nginx容器,由此引发了一系列的排查.如果你对,docker的这个错误感兴趣,点击进入. 正题 简单的讲,/bin/sh是早期版本,是一种便携方式的解释性脚本语言,自带有p

  • python编程之requests在网络请求中添加cookies参数方法详解

    哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这

  • Python编程之Re模块下的函数介绍

    re模块下的函数 compile(pattern):创建模式对象 import re pat=re.compile('A') m=pat.search('CBA') #等价于 re.search('A','CBA') print m <_sre.SRE_Match object at 0x9d690c8> #匹配到了,返回MatchObject(True) m=pat.search('CBD') print m None #没有匹配到,返回None(False) search(pattern,

  • C++编程之CString、string与、char数组的转换

    C++编程之CString.string与.char数组的转换 虽然网上关于CString,string,char数组的转换的文章一大堆,但是感觉很乱很杂,而且许多并不能真正达到目的,在此,我把自己调试通过的转换方法贴到这里,做个笔记. 编译环境:vs2008, Use Unicode Character Set //----------------ANSI字符串转换为UNICODE字符串----------------------// // 待转换的数组 char szDCBparam[50]

  • Linux网络编程之UDP Socket程序示例

    在网络传输协议中,TCP协议提供的是一种可靠的,复杂的,面向连接的数据流(SOCK_STREAM)传输服务,它通过三段式握手过程建立连接.TCP有一种"重传确认"机制,即接收端收到数据后要发出一个肯定确认的信号,发送端如果收到接收端肯定确认的信号,就会继续发送其他的数据,如果没有,它就会重新发送. 相对而言,UDP协议则是一种无连接的,不可靠的数据报(SOCK_DGRAM)传输服务.使用UDP套接口不用建立连接,服务端在调用socket()生成一个套接字并调用bind()绑定端口后就可

  • 解析Java编程之Synchronized锁住的对象

    图片上传 密码修改为  synchronized是java中用于同步的关键字,一般我们通过Synchronized锁住一个对象,来进行线程同步.我们需要了解在程序执行过程中,synchronized锁住的到底是哪个对象,否则我们在多线程的程序就有可能出现问题. 看下面的代码,我们定义了一个静态变量n,在run方法中,我们使n增加10,然后在main方法中,我们开辟了100个线程,来执行n增加的操作,如果线程没有并发执行,那么n最后的值应该为1000,显然下面的程序执行完结果不是1000,因为我们

随机推荐