设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

30年的Hello world

2013-7-15 11:22| 发布者: joejoe0332| 查看: 2343| 评论: 0|原作者: fbm,姜鹏飞,徐继开翻译|来自: oschina

摘要:   最近我在7月4日这一天所在的那周休假了。休假期间,我利用大把的时间对我时至今日的职业生涯进行了反思。意识到我现在写代码都写了快30年了,不免让我有些 许震惊。因此我决定,要利用这段美好的休闲时光,写篇 ...
  这段小程序会将一个索引装载到“Y-加法器”中,然后将始于$C100的内存中的字符一个一个的发送给ROM中的一个子程序,从而将这些字符显示出来。这就是for循环(for y = 0; y <= 0x0d, y++)所对应的机器码。RTS 命令会从子程序中返回。为了执行这个程序,你还得使用内建的SYS命令呼叫出内存地址(很不幸,为此你不得不将16进制的$C000转换成10进制的 49152,但除此之外其它的运行起来那叫一个顺畅)。我将表示“HELLO, WORLD”的PETSCII字符存储在了内存地址$C100处(是的,Commodore 64有它自己特殊的字符页(character page))。程序运行结果如下:


c64machinecall



  当然,当我从原始的机器码转战到汇编语言时,日子就稍微好过了点。使用汇编语言,我就可以预先规划我的软件,而且还不用死记内存地址了,只需用标签来标记内存地址即可。上面那段机器码对应的完全相同的汇编程序可以如下来编写:


  1986 – 6502 汇编语言


* = $C000       ;set the initial memory address
CHROUT = $FFD2  ;set the address for the character out subroutine
         LDY #$00 
LOOP     LDA HELLO, Y 
         CMP #$00          BEQ END 
         JSR CHROUT 
         INY 
         BNE LOOP 
END      RTS
HELLO    ASC 'HELLO, WORLD.' ; PETSCII
HELLOEND DFB 0 ; zero byte to mark the end of the string 


  大约也就是这个时候,我意识到我是真的喜欢编写软件了。高中时我参加了一些课程,但他们教的不过是一些很愚蠢的小型Pascal语言,设计这种语言就是为 了使学习如何编程变得“轻松一些”。真是轻松了吗?经过使用“机器监视器”徒手编写复杂的程序之后,我感觉Pascal实在是太过于轻松了。我还真是不得 不承认,用Pascal编写“Hello, World”的语法实在是太简单了。 


1989 – Pascal


program HelloWorld;
begin
  writeln('Hello, World.');
end


  我想,在这时候,很时尚的小子们都在用C编程序呢。C是一种非常灵活的语言,它感觉就象是汇编语言之上的一些功能性的宏,而不像是一门新语言。因此我额外自学了C,但C我却只用了不长的一段时间。


1990 – C


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


  这段小程序包含了一个处理标准输入/输出的库,然后就在屏幕上输出了一段文字。C中的库使得C可以开发跨平台的应用 —— 不管是在Windows还是在Linux中调用的都是同一个函数,但库本身实现了能够运行于目标机的所有底层子程序。上面这段代码也是我多年后在 Linux机器上首选摆弄的代码。如果那时你还没有入计算机这个行当,有些情况是我光用语言很难说明白的,那时要是你不弄个Linux自定义安装版,大家 就觉得你不是个真正的程序员。我所说的“弄个自定义安装版”,意思是梳理Linux的源代码,将其按照你自己独特的硬件对Linux进行定制。其中最有意 思的要数对显卡的处理了,要掌握监视器的“点时钟”情况,其中还需要施展各种奇巧淫技才能让主板很好的配合图形芯片一起工作。好吧,我跑题了。


  C对我来说学起来真的不算是个挑战,但我很快就搞明白了,耍酷的小子们在做着不同的事情,正在学习一种称为“面向对象编程”的编程范型。机器码和汇编语言 可能是和OO距离最远的东西了,从面向过程的编程转向面向对象的编程对我来说是个我乐于接受的挑战。在那时你还无法仅仅通过在线搜索来寻找学习资料(搜是 可以搜的,但搜索机制和现在不同而且搜索结果也少之又少),因此我就出去买了一摞C++的书。 C++的确支持“对象”这个概念。它甚至还使用对象来表示 流和管道,能够以对象的方式来对它们进行操作。面向对象还引入了命名空间的概念,以此来更好的管理代码的划分。说了这么多,这次“Hello, World”变成这样了:


1992 – C++


#include <iostream>
using namespace std;
int main()
{
  cout << "Hello World";
  return 0;
}


  我一猛子扎进了大学,但令我失望的是,我的大学里并没有开设教授我所感兴趣的象C和C++这样的现代语言的课程。相反,我不得不应付差事的课程却是让我在 一个叫做“Cypher”的大型机上用一种叫做Fortran的很有趣的语言来写作业。Fortran这种语言竟然很在意你把代码放到哪一栏中!没错,那 时这种语言规定第1栏用来写注释,第1到5栏写语句的标签,第6栏用于续行字符,只有从第7栏你才能开始写真正的代码,我学到了足够多的Fortran, 使我认识到我以后再也不想用这种语言编程了。 


  1993 – Fortran


       PROGRAM HELLOWORLD
       PRINT *, 'Hello, World!'
       END


  那时我翘了大部分课程,把晚上的大部分时光花在了计算机房。在那里我使用的是我们大学的大型Unix机。在机房里我发现了Internet,学到了安装软 件的“老式”的方法:下载软件源代码,build出可执行程序,查看错误,然后进行相应的调整和修复才能得到一个好用的软件。实话说,我还真不知道不学会 那时的编程技术,你怎么才能学会使用Unix。那时我不断地探索和学习使用计算机系统的方式。当时我所做的最常见的一件事就是执行一个能够倒出大量信息的 命令之后,再使用一些非常“顺手”的命令行工具对这些信息进行解析。那年我学到的最酷的语言之一就是PERL。虽然用“Hello, World.”这样简陋的例子做演示对PERL来说很不公平,但就先将就一下吧:


  1993 – PERL


$welcome = "Hello World";
print "$welcome\n";


  与此同时我很快发现了大量的World Wide Web(是的,那时我们就是这么称呼Internet的。Internet中运行的就是GopherArchie这 类好玩的程序,World Wide Web只是Internet之上的一写文档而已)。HTML对我来说又是令一个飞跃,它使我第一次接触到了描述性UI。不用装入变量或字面量并使用一些关 键字或子程序,我就能够将内容组织到一个页面之中。你可能会惊奇,直到20年后的今天,HTML页面的基本语法实际上根本都没怎么变。


  1993 – HTML 

<html>
<head><title>Hello, World</title></head>
<body><h1>Hello, World</h1></body>
</html>


  对我来说这是一段很有意思的时光。我从个人计算机(TI-99/4A和Commodore 64,还在很短的一段时间中用过Amiga) 转向的大型机, 忽然之间我的PC真的只是变成了用来连接到Unix大型机的终端而已。我还在PC上运行了一个Linux操作系统,这是因为Linux是 连接到Internet和网络的最快最方便的方式 —— Linux内置了TCP/IP协议栈,无需想老版本的Windows那样在操作系统之上再安装这个协议栈了(还有人记得NETCOM吗?)我的大部分工作是在大型机上完成的。


  我真地意识到了,我在间接失去同PC世界的联系。显然那时疯狂的个人计算时代已经结束了,有两种机器渐渐成了接灰的摆设了:一种是对于我们中的大部分人来 说的运行Windows的PC,另外一种就是对于设计者而言的Mac机器。PC已经过时了就是我当时的信念。那时我有个室友成天围着Mac转,用Mac来 设计各种优惠卷。他有一大堆漂亮的图形设计程序,经常会把一个叫做Quark的软件调出来,然后问我:“你的PC里有这样的软件吗?”我会耸耸肩然后提醒 他,我连一个圆或者正方形都不画,我要这样的图形软件有什么用?我喜欢我的PC,因为我懂软件,而且我也会数学,即使我没有画什么图,我肯定能够利用数学 在计算机上画出分形图形或者粒子风暴图。当然要做到这些就需要有图形卡,通过TELNET连接到Unix机可干不了这些事,所以我开始学习PC编程了。那 时在PC上用来编程的就是Win32和C++了。即使在今天的Visual Studio 2012中,你依然能够运行下面我说的这个例子。我不会用我原先在Win32下编写的有150多行代码的“HELLO.C”程序来烦你的。



酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部