java面向过程编程怎么写_从面向过程到面向对象,我的编程之路

也许现在新一代的程序员一开始涉足的就是c++,C#,Java这类面向对象的语言,如果这样,这篇文章可能得不到他们的认同。 这里,我只想写写我从面向过程到面向对象开发成长中的一些感想而已。

我最初学习的语言是basic,但是入门太早,早的都没有电脑可以给我用,所以对于basic其实没有多少感觉,只是觉得很简单。等后来用的语言多了,怎么都觉得basic,尤其是vb,实在是个小孩玩的玩具,根本无法发挥编程的效力。因此我在此就跳过basic语言了。

刚入大学,我学的是pascal语言。它主要是一门教学用语言,可以说是高级语言入门的典范。我至今仍然很感谢这门语言对我的指导作用。虽然这门语言在语句表达上有些繁琐(相对c语言而言,但是对于初学者而言,以简单单词作为语法单元却是一种好处),但它在语言规范上非常严谨,不容许存在丝毫的模棱两可。这在C语言里面是做不到的。我在这门语言里面学习了数据结构,图形学和简单的窗口编程,并且编写了大量小型的课程设计程序(那个时候管自己的代码叫软件,现在想想真是汗颜),初步体验了面向过程编程思想。那个时候我也自学了c语言,觉得它的语句太难记忆,一直啃不下来,因此主要还是用pascal写程序。后来到大四临毕业,就开始转向到object pascal 和delphi编程,但是由于时间很短暂,虽然使用了对象,但是仍然不得OO的要领,学的像个傻子似的。

此外在大四的时候,我也尝试着去学VC,用的是那本著名的《VC++ 从入门到精通》,有一块半砖头那么厚。 我啃了很久都啃不下来, 感觉vc和我所学到的c++完全不是一回事。也没人告诉我vc里面哪些奇怪的类型到底是怎么回事。后来的放弃其实不是我的错,而是vc逼的。现在回想起来vc从一个学习者的角度而言,实在太不友好,当然我们国内的计算机教育也实在和国外的差距太大,连讲操作系统课的老师自己都不知道真正的操作系统里面是什么一个样子。能找到的语言方面的书,最多的就是谭皓强的一套。我相对我的同学已经很不错,毕业的时候已经有近5、6千行代码的经验了,大多数学计算机的写的代码加起来的不过几百行。也许现在看起来很可笑,但是当时的情况的确如此。

真正让我接触面向对象的是Java语言。 大四最后一个课程设计要求java做,因此对java有了真切的感觉。java用下来虽然自己不会写对象,但是和对象相处了一段时间之后,至少知道应该怎么去用对象了。由于java那个时候已经有很丰富的库函数可以使用,让我这个小毛孩觉得这个语言太可爱了。 它比c和c++的语法友善和简单很多,没有多少晦涩的东西,又可以画出很漂亮的界面,实在太吸引人了。唯一的缺点就是太慢了, 用jbuilder看一下界面就把我p3 500M的机器拖死过去了。当然那个时候的java还是很简单的,到了后来j2ee ejb 以及在mobile上的应用使得java变得像一只极其庞大的恐龙,让我再也没兴趣去理会它了。几次还想重新把它拾起,但是一问当时跑jbuilder的机器要什么配置的时候(记得那个时候就要512以上内存了),我就退缩了--没钱买这么好的机器。

记得大四的时候刚刚微软推出了dotnet,还和国内大学合作举办培训推广。我也争取到了学校团队的资格去上海微软参加了培训。然后就是一段时间用dotnet开发作品去比赛。 反正那个时候看dotnet觉得是非常恶心和丑陋的东西。为什么这么说? 其一,语法和内容几乎和java没任何差别,简直就是一个盗版货;其二、那个时候msdn里面查函数,30%的函数解释写着:目前该条目还没有内容,我们只能自己猜某些函数可能是怎么怎么用的;其三,装了dotnet的机器都不长命,没一台能跑7天不死的。 至今我都没有再碰过dotnet,听说现在这个东西还在玩程序员,庆幸当年没有入这个行,不如惨死了。

我的本科毕业设计要求在Linux平台上做的,于是开始了我的C语言生涯。至今4年多了,我仍然主要用C语言在写代码。C语言教会了我很多,特别是对于系统、硬件,程序模型这些概念。我很感激它。现在还有很多人经常问我这些概念,他们很奇怪为什么我对进程,线程,信号,中断这些概念这么清楚。这些其实都来自C语言,C语言是一门系统语言,它很好的囊括了目前所有与操作系统相关的概念,因此无论今后用什么样子的新的高级语言,系统api必将仍然用C语言来给出--除非计算机体系结构出现颠覆性的革命。

至于c++语言,我不是不愿意用,而是我的工作和程序性能很相关,C++语言的某些机制的效率很底下,实在不合适用在这样的场合。 其次C++对于进程线程和信号这类的概念的表达能力一直不够尽如人意。所以我觉得不合适用以系统编程。

但是不是说离开了C++,C语言就缺少了面向对象功能。其实C成熟的编程风格早已涵盖了面向对象的思想。有人说C++是C的超集,这是事实。然而从另一个角度而言,C孕函了C++。C++表达的东西,C完全可以表达。这个观点我无法展开去表述,但是一个简单的例子就可以简单的说明一些问题,在Linux内核的代码中,以及socket协议栈代码中,文件系统中, 各种对象概念,文件对象,套接字对象都以struct结合函数的方法来表达。我虽然目前还在用c写程序,但是我写的程序越来越趋向对象化。回顾我的编程学习和实践经历,我经历了用面向过程的语言写面向过程的程序,用面向对象的语言写面向过程的程序,用面向过程的语言写面向对象的程序, 很快我就可能会转到用面向对象的语言去写面向对象的程序了。 呵呵。

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

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

相关文章

c#xml操作方法

using System.Xml; //初始化一个xml实例XmlDocument xmlnew XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode rootxml.SelectSingleNode("/root");//获取节点…

急救WINDOWS内存错误

该内存不能为read或written的解决方案 使用Windows操作系统的人有时会遇到这样的错误信息:「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。如果去请教一些「高手」&#xf…

大厂不是铁饭碗

最近的事情有点多前段时间一个以前的朋友,买房找我咨询,问我恒大的房子能不能买,我当时没有给出明确的回复,但是也说了自己的看法。近些年房子越来越贵,我是从15年开始接触房子,不过我从没有想过靠房子来赚…

java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现

这个题目会有多个解法:需要判断n的二进制有几个1first:通过n向右移位&1,如果n的最后为1,那么与1结果为1,(相信大家都会与运算,hashmap就是用与运算)以此来实现,循环判断有多少个1&#xff0…

cesss

件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个转载于:https://blog.51cto.com/wuxh868/402629

python知识点1

1.if __name__ main 的作用 在此函数下的代码,只有当该文件运行的时候才能运行。当前文件如果被当做模块被其他文件导入,该函数下的代码就不会被执行。2.__init__方法在类被实例化之前,先使用__init__方法进行一些初始化操作,如…

java语句中switch_Java中的switch-case语句

在codewar里使用了以下switch-case语句,不熟练出错,所以记录一下。class ArithmeticFunction {public static int arithmetic(int a, int b, String operator) {int result0;switch(operator){case "add":resultab;case "subtract":…

使用valgrind检测内存问题

valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。1valgrind安装可以到官网下载最新的源码包:valgrind官网下载,也可以直接使用 c_utils/debug/valgrind 目录提供的 valgrind-3.13.0.tar.bz2 源码包。首先解压源码包tar xjf valgri…

[转]一个人脸检测器

//本文使用到Emgu.CV库,该库是C#语言对OpenCV的封装,以下是一个列子程序的改正版本。using System; using System.Collections.Generic; using System.Text; using Emgu.CV.Structure; using Emgu.CV;namespace VSL.Plugin.TrackingSystem.SimpleTrackin…

项目中cxf和weblogic整合时报错的问题

GJYW项目使用的weblogic版本是10.3.6,cxf使用的版本是3.1.4 在将项目部署到weblogic服务器上时就会报错,通过下面的方式可以解决weblogic和cxf框架在一起报错的问题(解决了本项目报错的问题,未必全部适用):…

下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了

我和电子圈老江认识了很久,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我。后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群。老江…

java过去配置文件的值_java对.properties配置文件操作

实现运用Java.util.Properties来进行对.properties配置文件操作。配置文件实例:如debug.properties#Tue Mar 21 15:46:17 CST 2017#keyvalueremote.debug.prot7451第一步写个获取文件路径的外部方法//-in- String filePath:配置文件名如debug.properties…

AS3.0中的显示编程(末篇)-- 滤镜(下)

剩下的三种滤镜,因为我自己也不是很懂矩阵啊这些的,只能做些简单的范例和说明了,抱歉!颜色矩阵滤镜、卷积滤镜、置换图滤镜这三种滤镜只能通过AS代码实现。如果说上面的六种滤镜,只是在原图的基础上做些简单的修改&…

这几个朋友,我记得

‍‍昨天的中秋节是在公司加班度过的,末了,在群里看到有人说要是今天还有人加班的话,那他一定是真正的卷王,好了,我是那个中秋节加班的卷王。早上打车去公司,快到公司楼下的时候,司机师傅跟我说…

HOWTO:如何修改InstallShield的运行环境

版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield中,存在一些运行环境的变量,如果我们做了某种选择,之后可能将不再提示,说不定什么时候又想改回来呢,找不到地…

杭电java期末试卷2015_2014年杭州电子科技大学Java期末试卷.doc

2014年杭州电子科技大学Java期末试卷.doc杭州电子科技大学学生考试卷( A )卷考试课程Java语言程序设计考试日期2014年 6月 16日成 绩课程号教师号任课教师姓名考生姓名学号(8位)年级专业注意:所有答案均写在答卷上,写在试卷上无效;(一)单选题(每题2分&am…

深入理解Java线程池:ThreadPoolExecutor

线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题: 如果并发的请求数量非常多,但每个线程执行的时间…

看嵌入式大神直播,送开发板!

这是一场嵌入式学习者不可错过的直播……以往拿到一个开发板,还要花费时间找资料,向有经验的朋友请教测试过程现在,在捷客直播间,嵌入式大神现场教学,手把手教你如何使用开发板开发一款智能设备9月26日晚,看…

iphone上如何绘制饼图(使用CGContextAddArc)(原创)

CGContextAddArc是一个比较强大的函数,建议仔细看一下iphone的开发文档。 CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, intclockwise) CGContextRef: 图形上下文x,y: 开始画的坐标radius: 半径s…

java实现itchat_GitHub - Xiazki/itchat4j: wechatbot 的java实现,简单搭建了基本框架和实现了扫码登陆,具体网页微信api请参考...

itchat4j 微信自动回复机器人-------------- --------------- ---------------| | | | | || Get UUID | | Get Contact | | Status Notify || | | | | |------------- -------^------- -------^-------| | || ------- --------| | |-------v------ ------------- -------------…