我的第一门编程语言

news2024/12/24 22:01:05

元旦节在家重温了一遍《三体》,看到下面一段描写:

监听部的计算机系统也远比发射部庞大复杂,叶文洁第一次走进主机房时,看到一排阴极射线管显示屏,她惊奇地发现,屏幕上竟滚动着一排排程序代码,可以通过键盘随意进行编辑和调试。而她在大学里使用计算机时,代码都写在一张张打格的程序纸上,再通过打字机噼噼啪啪地打到纸带上。她听说过从键盘和屏幕输入这回事,现在竟然真的看到了。但更令她吃惊的是这里的软件技术,她知道了一种叫 FORTRAN 的东西,竟能用接近自然语言的代码编写程序,能将数学公式直接写到代码里!它的编程效率比机器码汇编不知高了多少倍。还有一种叫数据库的东西,竟能那样随心所欲地操纵海量数据。

勾起了我的一段回忆,我的第一门计算机编程语言,就是这段话中提到的 FORTRAN

FORTRAN 是 “公式翻译”(Formula Translation)的缩写。这门编程语言估计绝大部分程序员都没听说过。不过其来头不小,历史也悠久。早在 1957 年,由 IBM 开发,是世界上第一个高级编程语言。更为神奇的是,如此古老,也没多少人听说过的语言,并没有消失,仍然在科学计算领域发挥着余热。有一次和一位从事 GPU 研发的朋友聊天,他们首先做的工作就是支持 FORTRAN 语言,可见这门语言在科学计算领域仍然是顶梁柱。在最新的 TOIBE 兵器谱上排行 26,相当不错的成绩。

想想那个时候的电脑,真的是相当简陋。显示器是黑白的,没有硬盘,没有鼠标,上机的时候,每个人带几张磁盘,样子如下:

6b48bc860a4f8f42a15eada581c00c07.jpeg

这是一种直径为 5.25 英寸的软盘,最大容量为 1.2 MB。别小看这点容量,当时上面要存操作系统(DOS)、编辑器(ED)、FORTRAN 编译器,编写的代码也存放在这张软盘上。也就是说所有的操作都在这张软盘上,现在觉得真不可思议,哪像现在的系统,动辄好几十个 G。

关于 FORTRAN 语言的语法,现在是完全不记得。只记得有一点,FORTRAN 语言对格式要求非常严格,代码只能写在 7~72 列,当时对打字非常生疏,在这种格式上吃过很多亏。上机时最多的是碰到拼写错误,往往需要花费很多宝贵的上机时间。

FORTRAN 语言本身在发展,我们当年采用的是 FORTRAN 77,具有结构化编程特性。虽然 FORTRAN 90 加入了面向对象,并提供了指针,但这些对于我们来说过于超前。关键是,大一学了这门编程语言之后,就再也没有用过它。其实我上大学的九十年代,很多编程语言如 C/C++、PASCAL,等等,都已经出现并成为主流。而且那个时期正是从 DOS 操作系统转向 Windows 的过渡期,等我毕业的时候,Windows 3.2 / Windows 95 开始成为主流。作为程序员,编写一个带图形界面的程序才是一件炫酷的事。为了满足 Windows 下的程序开发,微软推出了 Visual Basic 语言,这门语言上手简单,通过拖拽控件就能完成用户界面设计。所以我工作后使用的第一门编程语言实际上是 Visual Basic。

学习了一门编程语言,但从没派上实际用场,是不是白学了呢?

也不能这样说,从 FORTRAN 语言的学习中,掌握了程序的基本结构(循环、判断),也学习了结构化编程思想(函数、过程),这样在后续的 C 、PASCAL、Visual Basic 语言的自学中,可以快速上手,除了 PASCAL 引入了面向对象之外,其它的编程结构基本差不多,只不过是语法有些差异。而面向对象的编程思想,也是在之后好几年才开始流行。当时的 Visual Basic 语言虽然不支持面向对象编程,但已经有封装、事件等概念,间接的帮助我后来理解面向对象编程。

技术都是有传承的,FORTRAN 有些特性被 Matlab 继承,比如可以直接对矩阵和复数进行运算,比如矩阵元素在存储空间的存储顺序采用行优先,等等。

对待大学的学习,不要认为大学都是学的落后知识,学到的东西没有直接派上用场,就抨击大学教育。要知道,有些知识,其影响是潜移默化的。

在后来的工作中,我陆续学习过不下十门编程语言,基本都是随学随用,查查手册、查查资料,就可以上手。

你的第一门编程语言是什么?有什么特别的记忆?欢迎在留言区讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KITTI评价指标学习

在pointpillars完成训练后,可以看到对于目标检测的评估,据了解,这是kitti的标准目标检测格式,所以了解了一下. 在generate label finished后,可以看到类别Car对应的AP(Average precision)有3个0.70,分别对应的是Kitti object detection中,被分为Easy, Moderate,和Hard三种级别物…

算法训练 —— 哈希

目录 1. LeetCode242. 有效字母的异位词 2. LeetCode349. 两个数组的交集 3. LeetCode350. 两个数组的交集II 4. LeetCode202. 快乐数 5. LeetCode1. 两数之和 1. LeetCode242. 有效字母的异位词 有效字母的异位词 本题的含义就是判断两个字符串是否相同; 我们…

文档管理降低运营成本的 5 大方法

文档管理降低运营成本的 5 大方法 正在寻找降低成本和最大化生产力的方法的首席财务官和首席信息官已经知道,良好的文档管理可以在几个月内收回成本。数字文档管理(有时称为“企业内容管理”或 ECM)通过自动化工作流程和消除耗时的手动任务来…

第三十四讲:神州路由器远程管理

1、路由器的带外管理 Username: admin Password: Router>ena Router#conf Router_config#username dcn password 123456 Router_config#enable password 0 789 Router_config#aaa authentication enable default enable Router_config# aaa authentication login de…

Spring学习笔记1

1.核心概念 IoC(Inversion of Control)控制反转 对象的创建控制权由程序转移到外部,这种思想称为控制反转 Spring技术对IoC思想进行了实现 Spring提供了一个容器,称为IoC容器,用来充当IoC思想中的“外部” IoC容器负责…

测试小白必备!初级软件测试面试题题库,你绝对要用

软件测试的面试过程中,面试官往往都会根据你面试的职位,提问一些相关的软件测试知识,而很多人为了能够提高的自己在面试当中的通过率,都会在面试前做好充足的准备。比如刷面试题,背答案、准备面试话术这些。今天&#…

JSP ssh 桌面网站系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh 桌面网站系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

mes制造执行系统软件适用于哪些行业,有你所处的行业吗?

MES作为一种面向企业工厂生产加工的软件,为企业制造做出了巨大的贡献。虽然MES很实用很简单,但是也凸显了一个问题,有一些企业的生产方式是不适用于MES系统的。那具体哪些行业适合使用MES,哪些不适合。本文将为大家做详细的介绍。…

【Threejs】关于物体在场景中的阴影问题

一、基础知识 1、摄像机的属性结构 先了解一下摄像机THREE.Camera的四个基本参数 2、渲染器设置 render需要开启阴影渲染,这一点是大前提: renderer new THREE.WebGLRenderer();renderer.setSize(width, height);renderer.setClearColor(0x274F80,…

π122E31Q 超低功耗 200Mbps高速率 双通道数字隔离器兼容代替ADuM1201WURZ

π122E31Q 超低功耗 200Mbps高速率 双通道数字隔离器兼容代替ADuM1201WURZ,具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立,可实现多种传输方向的配置,可实现 3.0kVrms 隔…

Python全栈开发(三)——python基础语法(二)

我们昨天说了python的数据类型,今天说说python的缩进规则和函数、python的顺序语句结构,条件和分支语句以及循环语句。缩进不规范会报错(IndentationError: unexpected indent),python的函数使用,从定义到实…

【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:存储

研究Solidity存储引用和智能合约存储布局 原文链接: https://betterprogramming.pub/all-about-solidity-data-locations-part-i-storage-e50604bfc1ad这是深入Solidity数据存储位置系列的另一篇。在今天的文章中,我们将更详细地介绍EVM中的一个重要数据位置:存储(Storage)…

feign简介与实战

一、JAVA 项目中实现远程接口调用 1)Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带…

APS生产排产软件在金属加工行业的应用

金属加工简称金工,指人类对由金属元素或以金属元素为主构成的具有金属特性的材料进行加工的生产活动。是一种把金属物料加工成为物品、零件、组件的工艺技术,包括了桥梁、轮船等的大型零件,乃至引擎、珠宝、腕表的细微组件。它被广泛应用在科…

C++入门(一)

目录 一. 关键字 二. 命名空间 三. 输入&输出 1.输出 2.输入 四. 缺省参数 1.全缺省参数 2.半缺省参数 五. 函数重载 1.类型 2.原理 一. 关键字 简单了解一下都有哪些关键字 二. 命名空间 在c语言的学习之中,我们知道,在同一…

js内置对象

包装类 <script>/*var anew Number(123);var bnew String("慕课网");var cnew Boolean(true);*/var a 123;var b 慕课网;var c true;console.log(a);console.log(typeof a);console.log(b);console.log(typeof b);console.log(c);console.log(typeof c); &…

WEB页面请求的过程

WEB页面请求的过程 需求&#xff1a;学校网络里的电脑访问到Google网络中的web服务器中 1、电脑通过物理网线接入校园网中 2、电脑运行DHCP协议&#xff0c;从本地的DHCP服务器获取一个IP地址&#xff08;DHCP服务器一般由网关路由器充当&#xff09; 获取过程&#xff1a; …

盛水最多的容器 + 接雨水(相向双指针)

目录 一、盛水最多的容器 二、 接雨水 2.1 - 前后缀分解 2.2 - 相向双指针 一、盛水最多的容器 题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使…

BPM结合低代码,为企业信息化建设添砖加瓦

编者按&#xff1a;业务流程管理和低代码平台结合的意义是什么&#xff1f;能为用户带来什么&#xff1f;本文了分析了低代码平台和BPM结合的意义&#xff0c;并进一步介绍了低代码BPM软件开发平台的应用场景。关键词&#xff1a;嵌入式流程激活&#xff0c;端到端流程打通&…

【ES6】模块化语法(默认、按需导入import导出export的操作)

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;ES6模块化语法(默认、按需导入导出的操作) 本文速览&#xff1a; 目录 本文速览&#x…