也许现在新一代的程序员一开始涉足的就是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写程序,但是我写的程序越来越趋向对象化。回顾我的编程学习和实践经历,我经历了用面向过程的语言写面向过程的程序,用面向对象的语言写面向过程的程序,用面向过程的语言写面向对象的程序, 很快我就可能会转到用面向对象的语言去写面向对象的程序了。 呵呵。

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

  1. Java基础-学习笔记(五)——面向过程和面向对象的区别

    学习面向对象的语言,要弄清楚面向对象,首先要从理解面向过程开始. 回想起之前在学习C语言时,每次拿到一个题目,首先想到的是,先分析出解决问题所需要的步骤,每一个功能点,用一个函数来表示,使用的时候一个 ...

  2. java面向过程和面向对象

    面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...

  3. Java 从面向过程走向面向对象的程序设计思想

    什么是面向过程?面向对象? 它们都是解决问题的思路 我用一个生活的例子来区别它们: 起床,洗漱,吃饭--等这些都是生活中的事 吃饭:我们想吃饭之前要做饭,饭菜可以是自己做,或者爸妈做,也可以下馆子 面 ...

  4. java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法

    面向过程和面向对象 解决简单问题可以使用面向过程 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程. 面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向 ...

  5. JAVA入门级教学之(面向过程和面向对象的区别)

    目录 JAVA入门级教学之(面向过程和面向对象的区别) 面向过程和面向对象的区别: -面向过程: -面向对象: -发展历程: -生命周期中包括: -什么是类: -什么是对象: -软件开发的过程: -重 ...

  6. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  7. 架构师之路---面向过程和面向对象 王泽宾

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  8. 带你理解面向过程与面向对象

    START WeChat Applet(公众号) :Java空巷 一.前言 如果你总是对面向对象和面向过程傻傻分不清,这篇博客尽量会用通俗的方式来讲解. 二.面向过程 概念 面向过程是一种以过程为中心 ...

  9. 从面向过程到面向对象编程的思想转变

    项目的需求,要实现一个功能:更新表中若干行的部分列数据.Are you 明白大概要实现什么功能了吗? 嗯,我知道你明白了.那就接着往下看把. 遇到这样的问题,我相信很多人首先想到的方法是直接使用upd ...

最新文章

  1. windows10下postgreSQL 下载、安装、启动、关闭
  2. InnoDB与MyISAM等存储引擎对比
  3. perl pop和push函数,不使用索引更能利用perl的特性,减少边界值错误发生的几率...
  4. C++预处理程序指令
  5. 向webServices请求失败
  6. linux上怎么快速删除一个目录?
  7. GCC优化选项:一般的文档里不容易找到的-Os
  8. vue自定义组件,插槽,自定义事件
  9. java调用solr的分词查询结果
  10. 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
  11. iis配置write模块
  12. strlen 计算给定字符串的长度
  13. jQuery表格排序组件-tablesorter
  14. oracle 空间详解,Oracle Spatial空间分析详解 | 学步园
  15. python清屏命令-python 命令行里实现clear清屏技巧
  16. 夏令营课程产品介绍PPT模板
  17. 论文caj转换为word
  18. 苹果手机免越狱群控无需硬件即插即用高清投屏控制操作
  19. 用Acrobat无损去除PDF签名
  20. java中如何反编译class文件

热门文章

  1. XP系统安装SQL2000企业版开启1433端口
  2. jquery UI集合
  3. 用VSTS进行网站压力测试
  4. 需求分析阶段各种图的功能
  5. java int字母,从Java中获取int,也包含字母
  6. 【Tensorflow】卷积神经网络实现艺术风格化通过Vgg16实现
  7. 图像处理之积分图应用三(基于NCC快速相似度匹配算法)
  8. yii2 ajax分页,Yii框架分页技术实例分析
  9. 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
  10. stdin,stdout,stderr