从Delphi到Lazarus——我的编程之路
今天终于下定决心,把我使用的编程环境从Delphi转变成Lazarus了。这也许是一个明智的选择,但做出这个决定的过程包含了辛酸和无奈。
这应该是我第三次安装Lazarus了。以前安装之后总是感觉有很多不尽人意的地方,最终还是放弃了。这一次,也许是因为我看到了希望,也许是Lazarus的发展达到了我需要的程度,总之,我下定决心要使用Lazarus了。
说起Delphi,这个伴随我半生的编程工具,让我又爱又恨。它给我的工作带来了帮助,给我的生活增添了色彩,也消磨了我生命的大部分时光。
我的生活离不开编程,我的编程很长的一段时间以来Delphi,但Delphi的不断升级让我感觉到了疲劳。从Delphi3到DelphiXE,经过 一次次的升级之后,我不再升级了,而不再升级的结果是我的编程环境与新的操作系统距离越来越远了。距离感带来的不适让我产生了更换开发环境的想法,经历的多年的选择之后,我最终决定选择Lazarus。
说起我的编程生涯,总会想起年轻时的事情。
记得还在上学的时候,我在泰山脚下的工人文化宫参观了一个新技术展览,其中让我感触最深的是计算技术的发展。在展览中看到的计算机是一种叫手摇计算机的东西,现在说起来可以算是古董了,但那个时候还是一种先进技术。不过,那个时候已经有了比较原始的电子计算器,工作中已经可以不再使用手摇计算机了。这种古董并没有普及,原因是价格太高,而它的功能很大程度上代替不了我们的老祖宗发明的计算工具——算盘。
看了展览之后,正值那一学期开设的一个新的课程:计算机编程语言。当时的教材是学校的老师自己刻板后油印的,学习的内容是一种适用于PC-1500袖珍计算机的Basic语言。这时候我对计算机的未来有一个预言:计算机将成为未来工作中不可或缺的重要工具。出于这种预言和对未来的期待,我开始到书店里购买有关编程的书籍。不过,后来才知道,由于不知道编程语言是依赖于计算机型号的,也不知道需要开发环境,所以花了很多冤枉钱,也浪费了很多时间。那时候我买了Basic、Cobol、Fortran编程的书籍,在没有计算机的情况下学完了全部的内容。当时能够上机测试的只有PC-1500袖珍计算机。一年后学校买了苹果计算机,但是我那一级学生的计算机课程已经成为过去式,没有使用苹果计算机的资格了。为了测试自己学习的结果,费了好大的劲才获得了当时学校里唯一的计算机老师的同意让我到计算机教室里参观了一次。
参加工作后我首先从事的是工程设计。大量的结构计算、工程测量结果的计算、水力学计算等等需要消耗很多的时间和精力。一项工程的设计如果花费半个月,那么计算的时间就需要差不多十天甚至更多。为了节省时间,一台因为没有人会用而在仓库里沉睡的PC-1500袖珍计算机成了我的专用品,凡是需要重复计算或者试算的计算过程我都编写了程序,这也成了我真正编写程序的开始。需要十天的计算过程,我编写程序、录入计算机花费的时间不会超过一天,计算过程最长的需要大约三十分钟,短的会在一分钟之内出结果。
后来有了台式计算机,我开始真正接触了编程环境,可以使用Basic。那时的Basic功能有限,而且需要一个解释环境。为了找到更好的开发工具,利用外出学习交流的机会我得到了true basic、qbasic。后来还得到了Fortran。
在那个没有网络,软件匮乏的年代,买了计算机就跟买到一个新的本子差不多,如果不自己写东西,再好的计算机也是一种摆设。除了当打字机用,那时的计算机似乎找不到其他的用途。而作为文字处理软件,电脑里只有汉化的ws,那是一个功能很简单的文字处理软件。还有一个中国人自己开发的hw,功能同样很差。后来听说有一个人因为汉化的软件不好用就自己写了一个叫做cced表格处理软件,而我觉得cced的功能还不够,但他的想法给了我启发,于是我也自己写了一个集文字处理和表格处理于一体的软件,功能超过了当时我见到过的所有文字处理软件。这是我学习了Pascal后编写的第一个大型软件。正当我把它变得更强大的时候,Dos时代结束了。
window操作系统的出现带来了编程环境的改变,我不得不舍弃turbo Pascal去寻找新的能够在window中使用的开发环境。在使用了Visual FoxPro、Visual Basic、Visual C++之后,最终我还是选择了Delphi和C++ Builder,而在C++ Builder迷失了本性之后,Delphi 7成了最佳的选择。
微软的window没有停止升级的步伐,Delphi也一直在升级。每一个新版本出来之后,出于对新功能的渴望,都会跟着升级,而每一次的升级都需要把原来编写的程序代码进行修改以适应新版本开发环境的变化。
开始的时候把这种升级当作一种乐趣,而后来逐渐感觉到是一种负担。直到Delphi XE2出现后,感觉再也不想承受这种负担了。
之所以最后能够下定决心使用Lazarus,应该与感受到到在CodeBlocks+wxWidgets的强大功能有关,也应该与多年来从事自由软件开发的经历有更大的关系吧。
现在决定放弃Delphi改用Lazarus也许会面临对原有程序代码的更大的改动,但不知道这次改动之后是否还会因为升级而改动?希望不会吧。但愿未来是美好的。
从Delphi到Lazarus——我的编程之路的更多相关文章
- 平板点餐软件编程体会---记我的Android编程之路
前言 想开发一个平板点餐系统,研究下陈江根大侠分享的一个很高水准的实例,只是个单机版无实用意义. (如需运行源码请回复联系邮箱) 实现 Mysql 数据库+Tomcat WEb服务器,使用Servle ...
- 01-Python的介绍_Python编程之路
首先用一句业内非常出名的话来介绍Python "人生哭短,我用Python" 这也是Python宣传时经常说的一句话 从这句话中,可以非常清楚Python他到底优点在哪里,为什么要 ...
- 02-Python的下载和安装_Python编程之路
原文发布在特克斯博客www.susmote.com 之前给大家讲了关于python的背景知识,还有Python的优点和缺点,相信通过之前的介绍很多人已经清楚自己到底要不要选择学习Python,如果已经 ...
- 03-第一个脚本程序以及输入输出_Python编程之路
上节课已经教大家安装了Python的解释器,那么这节课我们就可以正式来写代码了 说明:在下面的代码演示中,我将大部分使用python交互器演示代码的输入输出,注意">>>& ...
- 04_Python的数据类型1数值和字符串_Python编程之路
上一节我们通过一个helloworld程序学习python的一些简单操作,还有输入与输出 这节我们来讲Python的数据类型与变量的操作 Python的交互器 在讲这个之前,我要先讲一下python的 ...
- 06_Python的数据类型3元组,集合和字典_Python编程之路
上一节跟大家讲了Python的列表,当然不是完整的讲完,后续我们还会提到,这一节我们还是来讲Python的数据类型 首先要讲到的就是元组 元组其实拥有列表的一些特性,可以存储不同类型的值,但在某些方面 ...
- 07_Python的控制判断循环语句1(if判断,for循环...)_Python编程之路
Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句 在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条 ...
- 09_Python定义方法_Python编程之路
有关Python判断与循环的内容我们上几节已经跟大家一起学习了,这一节我们主要针对def 做一个讲解 def 定义一个方法 在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python ...
- 10_Python函数方法加深_Python编程之路
上节课已经简单的跟大家讲了如何定义一个方法,但是并没有深入去讲,这一节我们继续来学习定义方法中需要注意的几点 默认参数 前面我们讲到定义一个方法时是可以传递参数的,除了这个功能,实际上python在定 ...
- 11_Python的列表推导式_Python编程之路
上一节我们结束了有关python的方法相关内容 这一节我们先来学习python的列表推导式 之前跟大家说过range方法的使用,在这里我就不做过多的解释了,如忘记了,请翻阅之前的介绍 列表推导式,是P ...
随机推荐
- 使用Navicat Premium 将数据库导入、导出方法
数据库导出 1.双击要导出的数据库,右键选转储SQL文件-,选择要保存的文件夹. 2.点击开始后,开始导出. 数据库导入 1.新建数据库,数据库的名字必须和导入的数据库文件一致. 2.在新建的数据库右 ...
- C# 如何理解装箱和拆箱 ?
装箱和拆箱就是C# 中数据类型的转换 : 装箱:值类型转换对象类型(引用类型,复杂类型) 拆箱:对象类型转换值类型 object obj=null; //引用类型 obj=1; //装箱 boxing ...
- element的图片上传预处理函数
/** 图片格式和大小的控制 */ beforeAvatarUpload (file) { // 允许上传 jpg 和 png 格式的图片 const isJPG = file.type === &q ...
- Android复习(三)清单文件中的元素——> activity
转自: https://developer.android.google.cn/guide/topics/manifest/activity-element <activity> 语法: ...
- .NET 内存管理两种有效的资源释放方式
前言 嗨,大家好!今天我们要聊一聊 .NET 中的内存管理.你知道吗?虽然 .NET 有一个很好的垃圾回收系统来自动清理不再使用的对象,但在某些情况下,我们还需要自己动手来释放一些特殊的资源,比如打开 ...
- P1762 偶数&杨辉三角
P1762 偶数&杨辉三角(天立OI) 解题思路 一.结论法 杨辉三角形结论 第\(n\)行有\(n\)个数. 每行奇数个数必为\(2^k\)(\(k\)不是行数) 当行数恰为\(2^k\)时 ...
- 适用于 .NET 稳定的官方OpenAI库
前言 今天给大家分享一个由 OpenAI 官方提供,旨在为 .NET 开发者提供方便的接口来访问 OpenAI 的 REST API.这个项目通过 NuGet 包的形式发布,使得 .NET 应用程序能 ...
- RecyclerView刷新方式
RecyclerView刷新方式 刷新全部item notifyDataSetChanged() student.setValue(new Student("二狗")); stud ...
- 二叉树遍历(C语言版)
二叉树遍历 先序 递归 int *res; void preorder(struct TreeNode *root, int *returnSize) { if (root == NULL) retu ...
- 一文彻底搞透Redis的数据类型及具体的应用场景
Redis 提供了丰富的数据类型,每种数据类型都有其独特的存储结构和操作方法,可以满足不同的业务场景需求.下面详细介绍 Redis 支持的主要数据类型及其底层实现,并结合具体的应用场景说明其使用. 1 ...