从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 ...
随机推荐
- (九)Redis 哨兵机制与集群
主从复制中,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,但是如果主库发生故障了肿么办呢?读请求,那还可以由从库继续提供服务,写请求就么得办法了.此时,哨兵机制就登场了,解决3个问题: ...
- [namespace hdk] Balanced_tree 整合
代码 #include<bits/stdc++.h> using namespace std; namespace hdk{ namespace balanced_tree{ const ...
- PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(二)
作为"贴代码"力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服!下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里 ...
- Android Systrace 基础知识 -- Why 60 fps ?
1.正文 今天来讲一下为何我们讲到流畅度,要首先说 60 帧. 我们先来理一下基本的概念: 60 fps 的意思是说,画面每秒更新 60 次 这 60 次更新,是要均匀更新的,不是说一会快,一会慢,那 ...
- 77.const声明对象修改对象里面的值会触发报错吗
不会,因为对象是复杂类型数据 :对象的地址保存在栈内存中,对象的数据保存在堆内存中 : 只要对象的地址不发生改变,无论堆内存的对象数据如何改变,对象的值就不会改变 :
- 56.dom如何映射数据
所谓的映射机制就是 页面的标签和js中获取的页面标签对象,无论修改哪一个,另一个都会随之更新 : 映射原理:浏览器在渲染页面的时候给每一个元素都设置了很多内置的属性(包含样式的), 当我们在J ...
- 谈一谈你对vue指令的理解
vue指令的本质是给 html 标签新增一些属性 : vue的指令可以分为 3 中类型 : 1. 用于渲染数据的指令,比如 v-for ,v-if ,v-show : 2. 用来交互的指令 ,v-on ...
- 在 Kubernetes 中实现微服务应用监控
张坚,科大讯飞开发工程师,云原生爱好者. 本篇文章我们基于 Prometheus 和 Grafana 实现微服务应用监控. KubeSphere 平台本身提供了监控功能,包括节点状态.集群资源使用率. ...
- PostgresSQL创建一个只读用户
create user readonlyuser with password 'R3333333341'; grant select on all tables in schema public to ...
- 使用 vscode 编译+运行 typescropt Mac win同理
一..d.ts文件最好在src/typings 目录下,可在tsconfig.json 文件配置 二.vs 监听文件变化,自动编译ts文件 tsconfig.json { "compiler ...