热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

软件工程课程感悟,软件工程专业认知心得体会

大三了,不知不觉就大三了,两年的“软件”之路,摸爬滚打,终于让我渐渐的走进了计算机的世界。期间的心酸.只有经历了才知道。在软

            大三了,不知不觉就大三了,两年的“软件”之路,摸爬滚打,终于让我渐渐的走进了计算机的世界。期间的心酸.......只有经历了才知道。

            在软件工程之路上,曾有多少次想放弃编程学习。和很多人一样,当初,我读软件工程这个专业,纯属是为了就业,为了以后能有份比较高薪的工作,其实,我中学最好的科目是数学,也不是一般好那种,而是特别突出的那种,填志愿的时候,曾经想过大学去读数学,但是碍于当时考的分实在太低了,读数学的好,感觉在一般的大学读出来,也不咋地,所以就选了一个据说是很有钱途的专业(从小到大都没怎么碰过计算机)。大一的时候,我还是很有激情的,基本上所有课都提早学,大一就把大二的部分课给学了,理论课方面的话确实学的比较快,但是,当时所学的编程(第一次所接触的是html)却让我吃尽了苦头,因为,高中的一些学习特点,我那时,在学Html的时候,总是想知道为什么这么写,以及从本质去思考它的由来。此后学的很多语言都是如此,总想知其所以然,而缺少对这些语言的一个练习,等学到大二的时候,已经完全对这个专业产生了厌恶,对当初的选择已经后悔的不要不要的了。大二的那段时间,不知道有多少次,在梦中怀疑自己的选择到底是正确还是错误,怀疑自己在编程上的天赋,梦想着去学数学..........特别是,每当参加acm比赛的时候,就在想为啥现在的比赛都被别人虐的不要不要的,而当初的自己基本上是虐别人的节奏。

         然后,大二的一整年,都是八点起来敲代码,半夜两三点睡。

---------------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------------------------------------------------------

       软件工程,到底是什么呢?我们到底怎么学,才能在软件工程上学的更好?数学和算法到底对软工有帮助吗?都说算法好,那算法又应该怎么学?

      软件工程,顾名思义,是一门用工程化的思想去开发软件的学科。它实际上是一个工程,并不是大多数人所以为的,软件工程就是开发软件这么简单,写写语言代码这么幼稚。我本科所处的是一所非常一般大学,我刚来这个大学,以前的学长学姐给我们灌输的关于怎么学好软件工程的建议大多都是,你要多去网上一些慕课看视频,多学技术,一旦你会做一个什么什么项目(比如中型网站呀,app呀),你就算在这个领域学的差不多了,算是大神了。我觉得不仅仅是我们学校吧,很多大学藐视都是这样子的情况。其实,在计算机这个领域,学的东西真的有很多,一些技术固然是有必要掌握的,但是完完全全的以这些技术为重点,认为学好这些技术,就算是学好这个领域,那真的是对这个领域的一个蔑视。软件工程,一个计算机领域最偏编程的东西,其实它最为本质的东西和计算机科学一样,那就是它相应的基础课(操作系统、网络、计算机组成原理,数据结构等),以及数学和算法。其中数学和算法,直接决定着你将来走的有多远。

      数学和算法以及基础课,在计算机领域中极其的重要,是我们最需要学好的!前段时间,曾经看到有篇文章,大致讲的是,现在的开发都是基于新技术、基于框架、基于封装进行开发,花时间去学数学呀,算法呀,基础课的话,真的没什么必要,因为,开发的时候,根本就用不到!说实话,从完成软件产品的角度来说的话,还真是,因为我大二做了一年的项目,所以做项目的流程也非常清晰,做的过程中,基本上所有的组件,网上都有,我们只需要在其上修修改改就能完成一个“秀色可餐”的作品。你想要什么技术,在开源的世界,总能找到你想要的。但是,你想过没有,你自己能不能做出一份属于你想法的作品,如果,没有这些资料,你还能做的出吗?而我相信所有的有梦想的程序员,都想通过自己的知识去创造一个属于自己想法的代码,而要做到这样的追求,就必须懂计算机基础课中的知识以及数学和算法。不仅如此,如果你在这些知识学的好的话,你在开发软件的时候,会特别的有感觉,真正的做到了知其然知其所以然的境界。举个简单的例子吧,操作系统,这门看似与硬件打交道的学问,其实,如果你善于学习的话,会从它的一些机理上学到很多的启发性的思想,比如,批处理思想,你想过没有,一些管理系统,现在很多是人工的吧,但是,我们其实可以写一个批处理文件去解决这些人为操作(不是写在后台逻辑那么简单,而是直接给客户,让客户去启动它解决)。还有其它的一些算法,也特别的值得在做软件解决问题时思考,比如信号量机制。数学和算法就更加了,现在的机器学习,说实话,你如果数学没学好,那机器学习基本上已经不是你的菜了。这种本源的知识,看似用不到,但是只要你花心思琢磨琢磨,就会发现,它的博大精深,对你对一些技术的理解,学习,创造,非常非常有帮助。

      当然,在软件工程中,你的编程功底也要学的好,而学编程的方法,就是多敲代码,多练习一些项目。对于一门编程语言,如果你要去知其所以然,说实话,这非常难,它不是数学,它根本无从证明及推理,很多东西,特别是面向对象的语言,都是封装好的。学一门编程语言,学的最快的方法,就是一个礼拜的时间记住相应的语法后以及使用场景后(就是单纯的知其然),就开始大量的敲代码,直接敲,不要去探究为什么。

      总而言之,在软件工程的理论学习上,就是要重基础,技术学习上,切记不要知其所以然,只需知其然就可。

      最后,来讲讲算法的学习,算法,这个东西,说实话,和数学真的不一样,虽然两个都是产生于现实世界,但是数学,它的理念就是,用数学去描绘这个世界,对于内容,它是用函数去表示事物的联系和自身特征,用抽象去开拓每一个领域的研究。但是,算法,它说实话真的不是在描述研究什么,而是一个决策,是解题的步骤。所以,我们在学习其时,真正着手是:

        一、对解题步骤要清清楚楚,十分清晰-----------可以通过记忆,最好方法是通过题目不断的练,练的时候多想。

       二、变量

      三、明白,此算法的解题场景。

     四、可以去研究算法的推导。



推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
author-avatar
fion依依315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有