从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 ...
随机推荐
- EF Core – 乐观并发
前言 之前写过 EF Core 悲观并发, 这篇主要讲一下乐观并发. 乐观并发的机制可以看这篇. Why Need This? 如果你用 EF Core 做数据管理, 建议你每个 Entity 都配置 ...
- 音视频入门-8-ffmpeg小实验-v4l2 ubuntu取图、格式转换、编码成H264,ffplay观看
1. getpic_transform_encode2h264.c #include <stdio.h> #include <string.h> #include <st ...
- HEOI2024 题目转存
赛时测试数据下载 wind xor wormhole maze timeline sleep 题解参考 [省选联考 2024] 季风 题目背景 生活在二维平面的小 X 准备拜访小 Y,但由于气候的变化 ...
- JVM 系列知识体系全面回顾
经过几个月的努力,JVM 知识体系终于梳理完成了. 很早之前也和小伙伴们分享过 JVM 相关的技术知识,再次感谢大家支持和反馈. 最后再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以点击查看. J ...
- ftrace options 中的irq-info
/sys/kernel/debug/tracing/options/irq_info 是 ftrace 中的一个选项,用于启用或禁用有关中断的详细信息的跟踪. options/irq_info 的具体 ...
- 2022年2月国产数据库排行榜: OceanBase“三连增”重夺探花,GaussDB实现本月最大涨幅引期待
寒辞去冬雪,暖带入春风.2022年2月,虎年开年的国产数据库流行度排行榜已在墨天轮社区发布,本月共有195个数据库参与排名.排名前十位的数据库分数增减幅度较大,整体排名略有波动. 首先,我们来看看排行 ...
- 【ZROJ2730】简单题 可持久化分块题解
Description 给定一棵 \(n\) 个节点的树,每次询问编号为 \([l, r]\) 的点中有多少个是祖先关系. \(n, q \le 10^5\). Solution 直接做的话树上的祖先 ...
- 【Azure Cloud Service】使用Key Vault Secret添加.CER证书到Cloud Service Extended Support中
问题描述 因为Key Vault的证书上传功能中,只支持pfx格式的证书,而中间证书,根证书不能转换为pfx格式,只能是公钥证书格式 cet 或者 crt,能通过文本工具直接查看base64编码内容. ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细教程)
1.简介 上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非 ...
- KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具
为什么开源 KubeEye Kubernetes 作为容器编排的事实标准,虽然架构优雅功能也非常强大,但是 Kubernetes 在日常运行过程中总会有一些疑难杂症和隐性的问题让集群管理员和 Yaml ...