关于问题目前大一,在学 C++,应该怎样提高自己的编程能力?一共有 4 位热心网友为你解答:
【1】、来自网友【华为云开发者联盟】的最佳回答:
关于这个问题,首先要知道什么是架构。在软件开发中,架构普遍指通过某种特定的平台,而达到完成整体软件功能的设计过程。架构是软件设计中非常重要的一个环节只要需求和架构确定之后,我们认为这个软件也就基本上可以定型了。
软件架构的主要目的是希望能重用以前的代码和设计,从而提高开发效率;在保持系统稳定的前提下,扩充功能和性能。
如何提高系统设计能力
一般而言,开发人员在从事开发 3 年后基本可以逐步做出初步设计,再做设计 3 年基本能够具备架构设计的能力。架构设计虽然高屋建瓴,从顶朝下对问题进行分解并最终解决,但是你会看到真正所有能力却是来源于你日常的编码和日常功能模块设计的大量实践积累。
当然大部分软件开发人员并一定能够在其中具备软件设计能力,这涉及到思维意识的转变问题。比如前面提到的架构要具备自动化和复用,在设计阶段要有分层、分解、抽象、聚合等思维能力。
比如一个边缘设备日志收集上报云端功能,别人告诉你采用 MQ 去接收日志上报到云端,你去编码实现,那么具备的是编码能力,但是你自己能够对问题进行分析和建模,参考比较各种方案后,得出采用 Kafka 去接收并上报日志到云端,效率最高,并最终实现,那么就是具备了设计能力。
因此在日常的编码工作中,需要刻意去培养这方面的软件设计能力。
在架构设计领域,需要站在更高的层次,你面对的是一个完整的业务系统的构建。这个业务系统包括了底层技术框架的搭建,开源组件的选择,开发框架和分层设计这些非功能性的设计内容,同时考虑如何对各种业务进行分而治之。
架构设计能力的培养,我觉得可以从如下几个方面进行:
1.务实技术基础
想要造高楼,基础必须要扎实,这里以 Java 为例,需要务实的基础有:Java 基础、高并发、JVM 优化、设计模式、数据库和索引。
现在有很多好的视频网站,能找到视频教程,比如哔哩哔哩,视频教程有个好处就是可以快进,回退,并且看起来比较轻松,我喜欢看书,书看的比较仔细推荐书籍有:《On Java》(新版 Java 编程思想)、《Java 并发编程的艺术》、《深入理解 Java 虚拟机》、《高性能 Mysql》、《HeadFirst 设计模式》。。。。。。
一边看书,一边实战、一边记录写成博客系列教程,同时又能锻炼自己的文笔和口才,说不定还能收获一批粉丝,打造自己的个人 IP,扩大自己的影响力,如果写的好的话,还能转成收费专栏,还能有一部分收入。
2.培养软件设计能力
设计能力往往就是从编码和编程思维开始的。
首先是将重复的东西自动化掉,其次是将相似的东西通过参数抽象变成可复用的方法或函数,在抽象后来实现自动化。其次就是自动化后你会发现如何更好应对变化,为了应对变化你做了更多的抽象或接口设计,在这个过程中逐步积累设计能力。这一个步骤你会发现你的就是某种设计模式来解决的问题。
其二就是编码积累到一定量后,你可以看软件架构设计的书籍,先形成设计的完整思路和方法论,也可以看设计模式类的书籍,对设计模式有一个完整的了解,能够将日常编码实践的内容和设计模式进行对比分析。这样再遇到类似的问题,你可以少走自己探索的弯路等。
但是以上也仅仅解决了设计能力的问题。
没有解决架构思维层面的问题,架构思维的核心是全局能力,是高度的抽象和建模能力,是既要清楚业务,又要懂得技术的相互衔接能力。
当然大部分架构设计人员更加热衷于开发框架,技术平台,开源组件选择等,而忽视了如何从一个业务需求的提出,你能够通过系统分析,得出整个业务系统应该如何划分模块,如何设计接口,如何设计整体数据模型和数据库来支撑业务,同时你也能够想清楚你需要遵循什么样的开发框架和模式以及分层架构来完成某一个功能模块的开发。
这个事情实际相当有难度,大部分人员不具备这个能力。
但是为何很多人架构设计还是做得不错,简单来说整个信息化和互联网发展到今天,各种业务系统,电商平台,互联网应用你基本都可以找到类似的架构参考和原型,你只需要参考别人的做法去做即可。
比如你要做一个电商平台,具体应该如何分解各个子系统,或者是否建立各个中台能力中心,这些都有标准的做法,不需要你再去创新,你只需要参考别人实践去做即可。
但是如果你面对一个全新业务,你要去规划和构建整个业务系统的架构设计,模块划分,我相信大部分架构设计人员都无法做好这件事情。这个能力已经不是简单的你技术多牛,而是考察的全局思维和系统观,考察的是分解和集成,分类和抽象,问题分析和解决,模式匹配能力,这些能力统筹我经常谈到的思维能力。
如果一个人真正具备这种独立分析和解决问题的能力,具备系统思维的能力,你会发现他不仅架构设计做得好,其它很多事情都能够很好的完成。就是这个道理。
所以要具备这方面的能力,你可以先熟悉相关的业务域知识,也可以看看完整的类似面向对象的软件架构设计书籍,领域驱动建模书籍,传统的类似 RUP 统一软件过程方法论等。看看完整的业务需求如何通过流程分析,用例建模,对象建模,接口设计逐步落地。
3.培养创新和激情
创新并不只是想出一个新颖的点子,创新是把点子转换成经济力量的工作,按照 Joseph Tidd、John Bessant、Keith Pavitt 的理论,创新分为产品创新、过程创新、位置创新、范式创新。
- 产品创新:改变一个单位提供的东西(产品或者服务)
- 过程创新:改变产品或者服务生成或配送的方式
- 位置创新:改变引入某产品或者服务的前后关系
- 范式创新:改变单位所做业务的基础精神模型
为了能够创新,需要找到一定的边界,这能够让你有学习、适应和恢复的空间,而不必过多的关注其中产生的错误,如此让灵感变成为现实的创新产品。
保持激情能够让你感觉是在做自己的事,而不是别人让你做事,要在架构师工作中发现激情、保持激情,当激情被别人浇灭的时候,要学会重启激情,把难事做好,尽心尽力投入,用激情作为前进的动力,同时坚持锻炼,这样才能一直在架构师的路途上不断走下去,成为一名出色的架构师。
以上内容分享自华为云社区《【云驻共创】怎么提高自己的系统设计和架构理论水平》,作者:阿提说说。
【2】、来自网友【BWanger 软件开发达人】的最佳回答:
我本人一直从事 C,VC++,VS 等方面的软件开发工作。
先后有北京的 211,985 大学的毕业生跟着我学习 C 方面的软件开发。这些学生有一个共同特点,大多对编程知之甚少,不会做软件,更别提架构,算法之类了。这就说明,不是用人单位苛刻,而是你的水准差的远。有以下建议供你参考:
- 基础理论要扎实
基础,很重要。计算机硬件结构,数据结构,数据库,编译原理,C,JAVA 语言,软件工程,操作系统,高数等等。怎样就算合格?绝不是考试及格就行。我看过很多高校的考试题,即使得一百分,你最多是刚入门的水准。这些是必修。
2,结合理论,做深入的编程研究
这一部分是所谓的实践。纸上得来终觉浅。计算机的摩尔定律,每五年更新一次。所以,你们老师讲的那一套,原理大致对,但现实,已经改变了。
如:CPU,也许你学的是 X86 的基本,但从 Pentium 至 I5,I7。主板中增加的 GPU/VPU,多线程,南北桥等,也许你听了就晕的各种名词。
各种 IDE 软件安装,如 VS2019,JAVA 等。别小看安装,十有八,九不会做。
软件开发,做界面 UI,各科通讯,文件操作,MFC 控件应用,Process 及 Thread,定时器,RTOS 如何使用等等。
建议多听知名专家的讲座,与时代同步。
3,进阶,学习《设计模式》,架构,算法,做一个综合类 APP。
推荐学习《设计模式》,可你你进阶。架构可学习理论。说实话,让刚毕业的大学生搞架构,是一个大大的 Joke。你很自信,用人单位绝不认可你那一套,没有实战,何谈架构?
算法,学校也开相关课程,但仅理论。如此公共化的理论,用人单位还需要你开发么?所以,看明白就行了。
做一个集多线程多页面 UI,算法,网络通信,基于 SQL 的数据远程交换等于一体的 APP,我认为你基本就可毕业了。当然,后期可跟老师做一些工程也是可以的,但千万要与市场结合。
总结:学校以基础为主,兼顾理论与实践的结合,注重与当下技术的结合,这是用人单位所真正需要的人才。
好高骛远,只知道几个新名词,永远也进入不到核心开发层。在用人单位,基础不行的人的命运,就是直接被开掉,没人愿意给你从头讲起!
【3】、来自网友【xfwangqiang】的最佳回答:
看你的问题,你是想提高自己,不想落在所谓大佬们的后面!我给你的建议,既然已经在学 c++,那就先把它学好,基础打牢,基础包括编程语言基础,编程能力基础!编程能力基础非常重要,在别人看来可能非常无聊,也没有成就感,新手如何练习,最简单的方法就是去买本算法习题集,把里面基本功打好,学会分析需求,需求再如何转换成详细设计,多思想总结,反复练习,出山就是架构师思维,今后做项目,撸起袖子就可以开干,什么编程语言都是个把两个星期就熟了!不需要眼红别人做项目,我觉得你刚开始去做,也是给人打下手,反而不利于你进步,并且这些项目也不见得多有水平,况且带你做项目的人水平也不见得高!说实话,我见过好些在大学里跟老师做项目的,无非就是多了解了些工具,多见了些平台,还留下了一堆不好的编程习惯!这些项目的含金量不一定比好大学的课程设计高,比如华科自动化的 c 语言课程设计,难度高,感觉好多不入流的程序员,工作几了,也不见得能完成!
总之,在学校里,学习技术,多重基础技术能力,轻业务应用,毕业了能干啥,也说不准!
【4】、来自网友【一直简单就好】的最佳回答:
我现在大二,二本学校计科专业。我谈一谈我自己的学习吧。
大学选计算机也是出于一种莫名的吸引,我之前对计算机没有过任何的了解(除了打游戏),对于专业很大一部分同学来说基础是比较差的,专业课学习也比较吃力。
然后自己开始零零散散学习 Java,先是自己找网课看,然后多练,多练,多练。这真的是唯一的捷径。有很多东西你可能第一遍看不懂,写不来。不用管,你就写三遍,五遍,十遍,二十遍,边写边理解,最后一定不会太差。
我也处于成长的阶段,按照这样的方法,我相信现在的水平和我们学校同年级同专业的相比应该算排在前列的了。加油吧!
以上就是关于问题【目前大一,在学 C++,应该怎样提高自己的编程能力?】的全部回答,希望能对大家有所帮助,内容收集于网络仅供参考,如要实行请慎重,任何后果与本站无关!