“Hello, World!“ —— 初学者进入编程世界的第一步

布莱恩·W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人

在这里插入图片描述

布莱恩·W.克尼汉

布莱恩·W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。

他与 Shen Lin 合作共同完成了两个知名的 NP-complete 优化问题的解决方案:图划分问题和旅行推销员问题。
旅行推销员问题(Travelling Salesman Problem, 又称为旅行商问题、货郎担问题、TSP 问题)是一个多局部最优的最优化问题:有 n 个城市,一个推销员要从其中某一个城市出发,唯一走遍所有的城市,再回到他出发的城市,求最短的路线。

布莱恩·W.克尼汉除了和丹尼斯・里奇撰写了《C 程序设计语言》之外,还撰写了《UNIX 编程环境》,这本书对 UNIX 操作系统的编程环境做了详细而深入的讨论,内容包括 UNIX 的文件系统、Shell、过滤程序、I/O 编程、系统调用等,并对 UNIX 中的程序开发方法做了有针对性的指导。

布莱恩·W.克尼汉在普林斯顿大学为非计算机专业学生开设了一门介绍计算机技术基础的课程,根据课程讲义编写《D is for digital》—— 中文译名《世界是数字的》。书中解释了当今计算和通信领域的工作方式,包括硬件、软件、因特网等,讨论了新技术带来的社会、政治和法律问题。

Hello World

1972 年,在贝尔实验室成员布莱恩·W.克尼汉撰写的内部技术文件《A Tutorial Introduction to the Language B》中首次提到了 “Hello World” 这一字符串。当时,他使用 B 语言撰写了一个用于演示外部变量的示例程序:

main( ) {
    extern a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
 
a 'hell';
b 'o, w';
c 'orld';

这个程序将在终端打印出 “hello, world”,然后附上一个换行符。之所以这一短语被拆分成多个变量记录,是因为 B 语言中的每个字符常量只能容纳 4 个 ASCII 字符。

1974 年,时值 C 语言取代 B 语言,在贝尔实验室的又一内部备忘录《Programming in C: A Tutorial》中,布莱恩·W.克尼汉用 C 语言再次编写了一个 Hello World 程序作为教学示例。这一程序在他和丹尼斯・里奇于 1978 年出版的《C 程序设计语言》中得到继承:

main( ) {
        printf("hello, world\n");
}

由布莱恩·W.克尼汉撰写的“Hello, world”程序 (1978年)
在这里插入图片描述
在上例中,main () 函数定义了程序开始执行的位置。其主体由一条语句组成,即对 printf (print formatted,打印格式化)函数的调用,将使程序输出以参数传递给它的任何内容,在本例中是字符串 hello, world。

自此,Hello World 成为了电脑程序员学习新的编程语言的传统。但是,也有些人认为 hello, world 的字符串早于 1966 年的 BCPL 语言出现的时候已经出现。虽然相关的字词确实在发明者记录的文件出现,但是可以肯定的是,Hello World 在当时确实没有流行。因此,人们公认为布莱恩·W.克尼汉是令该字符串走进公众目光的人。

K&R
起初,C 语言没有官方标准。1978 年贝尔实验室正式发表了 C 语言。布莱恩·W.克尼汉(Brian Kernighan)和丹尼斯・里奇(Dennis Ritchie)出版了《The C Programming Language》。这本书被 C 语言开发者们称为 K&R,很多年来被当作 C 语言的非正式的标准说明。人们称这个版本的 C 语言为 K&R C。
至此,布莱恩·W.克尼汉(Brian Kernighan)和丹尼斯・里奇(Dennis Ritchie)两人简称 K&R。

via : Hello World https://zh.wikipedia.org/wiki/Hello_World

纵观编程历史,“Hello World” 在向初学者介绍编码世界方面发挥了至关重要的作用。
虽然 “Hello World” 看似微不足道,但它不仅是一个初学者进入编程世界第一步的简单程序,也是承载着编码无限可能性之旅的开始。

Cover image for Say Hello to Programming: Writing "Hello, World!" in 50 Different Languages

扩展阅读

  1. “Hello, World”的历史 —— The History of ‘Hello, World’ - HackerRank Blog

    https://www.hackerrank.com/blog/the-history-of-hello-world/

  2. 300 种编程语言的 Hello World 程序列表 —— List of Hello World Programs in 300 Programming Languages – MYCPLUS

    https://www.mycplus.com/featured-articles/hello-world-programs-in-300-programming-languages/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/743444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot开启事务日志

一般框架开启日志的方式: 开启某个包下的日志就写该包路径,开启某个类下的日志就写该类路径。

3d渲染软件有哪些(1),渲染100邀请码1a12

3D渲染是把三维模型转成2D图像的过程,领域不同常用的软件也不一样,今天我们就简单介绍几个。 在介绍前我们先推荐一个设计人员常用到的工具,就是网渲平台渲染100,通过它设计师可以把本地渲染放到云端进行,价格也不贵&a…

PCL笔记二 之VS环境配置(不同版本Debug+Release编译)

PCL笔记二 之VS环境配置(不同版本DebugRelease编译) PCL官网:https://github.com/PointCloudLibrary/pcl/releases众所周知,PCL是一个用于点云处理并且依赖不少三方库的一个算法库,同时在编译配置环境时也很复杂&…

【嵌入式DIY实例】-Nokia 5110显示BME280传感器数据

Nokia 5110显示BME280传感器数据 文章目录 Nokia 5110显示BME280传感器数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板(ESP12-E 模块)和 BME280 气压、温度和湿度传感器构建一个简单的本地气象站。 NodeMCU 从 BME280 传感器读取温度、湿度和压力值…

轻松打造分班查询系统,这个工具助您一臂之力!

新学期伊始,老师们知道该如何快捷制作并发布分班查询系统吗?面对繁杂的学生名单和班级分配,无疑是一项巨大的麻烦。传统的纸质通知效率低下,容易出错,更别提在信息传递过程中可能出现的混乱和误解了。 现在有一个工具可…

枚举的使用(enum)

文章目录 前言一、枚举是什么?二、枚举的使用 1.使用枚举设置常量2.操作枚举类型成员的方法3.枚举类型中设置构造方法(给枚举常量赋值)4.枚举常量中设置方法总结 前言 枚举类型可以将常量封装在类或接口中,提供了安全检查的功能。…

开源网安参与编制的《代码大模型安全风险防范能力要求及评估方法》正式发布

​代码大模型在代码生成、代码翻译、代码补全、错误定位与修复、自动化测试等方面为研发人员带来了极大便利的同时,也带来了对安全风险防范能力的挑战。基于此,中国信通院依托中国人工智能产业发展联盟(AIIA),联合开源…

什么是CDN?CDN的工作原理是怎样的?

1.什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容&am…

分压电路 ADC计算电压 【老板再也不能开除我了 】

经典分压电路 一个电压过来 adc这里的电压等于: 如是12位adc 那么他最大值就是4095 如参考电压是5v 则:5v/4095 实际电压V*(R2/(R1R2))/adc值 转化:实际电压V 5v*(adc值/4095)/(R2/(R1R2)) :老板再也不能 因为不会…

word文档怎么加密?电脑文件加密的详细步骤【分享4个】

为了保护Word文档不被未经授权的人员访问或修改,我们通常会采用加密的方式来增加其安全性。那么Word文档怎么加密?电脑文档安全成为了大家所关心的话题。 本文针对不同的情况,本文分享了4种电脑文件加密的方法,每一种加密方法都比…

2-自动驾驶关键技术框架

框架 来自《自动驾驶汽车决策与控制》这本书 三大技术 车载平台的关键技术: 环境感知技术:这是自动驾驶车辆能够“看”和“感知”周围世界的技术。它包括使用摄像头、雷达、激光雷达(Lidar)和超声波传感器来检测和识别道路、障…

js实现数据加密,jwt加密方式

一个简单的数据加密 const crypto require("crypto");// 普通的数据加密 function sign(msg,key){ // 原始信息,密钥 String// "sha256" :加密的算法,key :密钥,msg :要加密的信息,"hex" :转成16…

【unity笔记】六、UI实现下拉列表切换视角

具体步骤如下 1. 创建UI下拉列表: 在Unity场景中右键点击并选择UI -> 下拉列表 来创建一个新的下拉列表。 2. 添加摄像机选项: 在Dropdown的Options属性中添加新的选项,通过点击按钮来添加选项,并为每个选项设置一个显示名…

创建github个人博客

文章目录 安装Hexo安装git安装Node.js安装 Hexo 安装Hexo 参考官方文档:https://hexo.io/zh-cn/docs/ Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的…

springboot多数据源应用,A服务依赖于B服务jar包,A服务和B服务业务数据分别入自己的库如何做?

上一节我们简单阐述了springboot多数据源如何配置。在实际的业务场景中我们常常遇到A服务依赖于B服务jar包,A服务和B服务业务数据分别入自己的库中。为何要这么做呢?比如B服务是日志SDK,A服务集成B服务来实现记录日志的功能,但是日…

Stable Diffusion 3 正式开源,超强文生图模型 SD3-M 上线,赶紧来试试吧!

前言 我们都知道 Stable Diffusion 3 是一款强大的文生图模型,拥有20亿参数,因其高效的推理速度和卓越的生成效果而备受瞩目。 近日,Stability AI在推特上宣布正式开源了 Stable Diffusion 3 Medium(SD3-M) 权重&…

网络编程篇: HTTPS协议

一.前置知识 早期很多公司刚起步的时候,使用的应用层协议都是HTTP,而HTTP无论是用GET方法还是POST方法传参,都是没有经过任何加密的,因此早期很多的信息都是可以通过抓包工具抓到的。 为了解决这个问题,于是出…

网络安全事件研判

研判(入侵检测) 研判我理解为人工层面对入侵检测事件进行再分析,即借助已有的设备告警根据经验判断是否为真实攻击 研判工作要充分利用已有安全设备(需要提前了解客户的网络拓扑以及部署设备情况),分析其近…

【SQL Server数据库】关系模式与关系代数

目录 一、请用关系代数完成下列查询 1. 求 供应工程J1 零件P1的供应商号码SNO; 2. 求 供应工程J1 零件(P)为红色 的供应商号码SNO; 3. 求 没有使用 天津供应商(P)生产的红色零件(S&#xff0…

Sam Altman:从少儿奇才到OpenAI掌舵人

自2022年底发布了ChatGPT以来,OpenAI及其首席执行官Sam Altman迅速成为科技界的焦点人物。Altman的崛起并非偶然,而是长期以来不断追求权力和创新的结果。本文将回顾Altman的成长历程,探索他如何一步步走向OpenAI的顶峰。 童年与教育背景 S…