编程语言大战三百回合

首先,谈一下,我所学过或者说了解过的几种编程语言。大一下学期,第一次接触编程,当然是C语言。无可争议的是C语言是绝大部分人的入门语言。C语言健壮的语法规则和可读性让我对爱不释手,但是C语言的指针的确是困扰很多人的一个难点。它可以直接访问硬件的地址,这对于编程来讲提供了极大的便利,同时也许多人摸不清头脑。没有指针的C语言仍然是一门合格的编程语言,但是却没有了70%的威力。说到这里,想必大家清楚C语言指针的强大了吧!说实话,我的编程天性并不高,我之所以能比同龄人理解的更深一点,完全是因为我的投入。我记得在大一下学期的C语言课程设计中,老师要求我们写出300行左右的小程序。我写的是银行自助存取款系统,没错,在300多行的代码里,我没有使用哪怕是一个指针符号。当然,我的程序是完全可以跑起来的,而且没有大的bug。我之前就提过,没有指针的C语言仍然是一门合格的语言。

之后学习C语言就是大二的数据结构课程中了。我们的这个课接近理论层面,在C语言的代码实现相关的数据结构中并没有下多少功夫。我只是简单的实现一个学生成绩管理系统,当然,这次我用上了指针。大概这就是我所有的C语言学习经历了。总结一下,C语言是我学习计算机的启蒙,我第一次感受到了计算机的强大和魅力。为之后的学习打下基础。

第二个学习的语言就是java了,它陪伴我一直到现在,大约一年半。我在大一的暑假学习了java,我看了大概200多集的Java入门视频。了解了Java的基本语法,数据类型,引用类型,网络编程,多线程编程,桌面编程以及之后学习的web编程等高级的东西。Java没有指针,这对程序员非常友好,我们专注与核心功能的实现。Java让我对计算机的理解更进一步。Java是一门开源的编程语言它具有其他语言不能比拟的跨平台性。Java源代码经过编译生成class的中间代码,然后再通过虚拟机生成本地的二进制文件执行。Java的学习过程中也学到了非常多的其他技术。比如,Linux,spring,spring mvc,spring data,spring data jpa,mybatis,shiro等等的开源框架。以及对一些微服务框架spring boot,spring cloud的入门级了解。我们现在的编程也没有扎实的代码编写量。年轻的学习者,开口闭口谈的就是框架。其他我们更应该了解的是java web编程中的servlet,jsp,html,css,JavaScript等。没有这些基础的东西,哪里来的框架。我们更应该注重基础的学习。框架和工具的使用能提高我们的开发效率,但是扎实的基础和对技术的感悟能力可以使我们写出更加优秀的代码。没有几个人对设计模式感兴趣,作为程序员,我们必须对自己的代码精益求精。对bug要彻底消灭。

Java的学习过程是快乐的,看着自己知道的越来越多,就越来越渴望知道更多的东西。从java基础到web编程再到对其他东西的学习是一个从无到有的过程。然后就是现在所学的python和c sharp语言。这两种语言我想通过对比的方式来介绍。首先,它们都是面向对象的语言,就像java那样。但是python的灵活性更强一些,它也被称作是脚本语言和动态语言,而c sharp是静态语言。Python和c sharp的应用范围都十分广泛。Python用于web编程,桌面编程,数据分析,图像识别,语音识别和人工智能等等。而c sharp则用于web编程,桌面开发,移动端的开发(iOS和Android),嵌入式的开发等等,都具有非常大的应用范围。个人感觉更喜欢c sharp的语法,python的语法十分简洁,但是无形中给我一些压力。最近也接触了不少的开发工具,比如idea,vs,eclipse。这三种是我使用最多的ide。Vs宇宙第一的ide我想说名不虚传。优秀的ide的确可以帮助我们做许多事情,我们不再需要重复造轮子。就比如c sharp的winform开发,开发工具的内部为我们提供了多种小的组件(日历,菜单栏,字体选择框等等)。这大大减轻了我们的开发难度。Python的学习我并没有十分深入,就仅仅练习了一些类的写法以及四种基本的内置数据结构(字典,列表,集合,元组),当然,在这里我想说疯狂的学习语言而不深入了解是没有太大意义的。

以上所说的这几种语言除外,我还学习了JavaScript以及html。我相信许多人会说HTML不能算作一门语言,的确是这样,我也是这么认为的。JavaScript是一门专为web而开发的,它并不支持多线程,但是现在的JavaScript简直是春风得意啊。业内有这样一句话,能用JavaScript的,最后都用JavaScript了。JavaScript甚至被用作了操作系统的开发,比如大名鼎鼎的node.js。前端的js框架更是数不胜数,我接触过easyui和bootstrap都是很好的前端框架。Html标签化的语言方式也是值得学习的。

最后,说完编程语言这种高大上的东西。我准备好好说一下计算机基础知识以及计算机专业的学生的学习方式。量个让我影响深刻的事情都发生在课程设计的时候。第一次,我的C语言课程设计中,我的系统在登录之后可以进行储户的存取款操作,但是一旦退出系统,储户的银行卡余额就为0了。这的确闹出了笑话,这个道理让我明白了数据储存的重要性。第二次,也是发生在课程设计,只不过这一次是Java的课程设计。我仍然记得,我为了弥补C语言课程设计的不足,我再一次做了一个银行存取款的自助服务系统。这一次,数据存储的问题解决了。因为我已经学会了文件存储和数据库存储的方式。那时,我已经学会了(MySQL,derby)相关数据库。但是我又遇到了别的困扰我的问题,在开始做这个课设的时候,我想用mvc的设计思想。并且对mvc做了一定的了解。但在开发过程中,我深深感受到了没有系统化的分析和设计所带来的问题。我在那一段时间里,一点也感受不到编程的乐趣。我想的只有快点让我无论用TMD任意的一种方法把这个该死的需求实现。我感觉很痛苦。我的耐心被这些细节搞到奔溃,我感到无助。终于不知道怎么回事,我把自己之前的设想一点点减少,最后总算是实现了这个最精简的版本。写完代码,我陷入深思。也许这就是软件危机的雏形吧。预期不能交付,超出预支的花费,不能满足客户的需求好像在我的coding中都有体现。我明白了软件工程出现的意义以及必要性。没有理论的指导,只知道埋头苦干是远远不够的。软件的开发如同我们的世界一样,需要规范和被认证的准则。这两次的经历非常宝贵对我的编程之路。计算机基础是多么的重要,相信每一个相关专业的人比我更明白。计算机组成与结构,操作系统,数据结构与算法,算法的设计,编译原理以及计算机图形学等等是必学和必知的知识。了解这些,你可以写出更加好的程序。计算机的执行效率和代码的健壮性会更好。当然,这个世界需要安全。计算机的世界里也是如此,信息的传输和保存都必须有安全的保障。我们所了解的登录认证,身份认证以及数据传输的加密都是非常有必要的。

写在最后,我认为在计算机专业的学习过程中。我们需要三个关键点,其一,如果你有时间或精力去了解更多的知识,请去了解;其二,如果你有想法想去实现,请动手敲;其三,最重要的是,静下心来去钻研,不要看到别人用某某框架或者其他软件实现了一个炫酷的效果,你就浮躁了,你就好好搞你的小黑窗口,那里才是最神秘的世界。

如果想要了解更多Java知识,公众号:IWAN学编程

展开阅读全文

没有更多推荐了,返回首页