加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

为什么学了编程语言还是不会做软件?

发布时间:2022-11-22 15:01:22 所属栏目:Unix 来源:转载
导读: 有问有答是程序视界的一个免费问答栏目,感兴趣的朋友,可以按照下面的方式参与:
发邮件给 foruok@163.com,标题注明“有问有答”。
描述你的困惑或者问题。
我每周会慎重回答一个问题并整

有问有答是程序视界的一个免费问答栏目,感兴趣的朋友,可以按照下面的方式参与:

发邮件给 foruok@163.com,标题注明“有问有答”。

描述你的困惑或者问题。

我每周会慎重回答一个问题并整理成文章,(周四晚上)发布在订阅号程序视界内。

unix练习_英语口语练习在线练习_unix网络编程

我是一个大学生,马上大三了,其实没感觉自己学会什么,即使学了数据结构算法,我也不知道该去如何写个东西,一些思路没有,什么都不懂,请问您该如何走下去,就是一些改到实战上的东西缺什么都不懂,只懂基础的语法,求您请教。

unix练习_unix网络编程_英语口语练习在线练习

相信看这篇文章的大部分小伙伴,都经历过这个阶段。如果你还记得自己怎么走过这个阶段的,请留言帮帮这位提问的小小伙伴。接下来,我说说我的看法,抛砖引玉。

开发一个有一定规模的软件,需要以下几方面的知识、技能和能力:

这还不够,还有很多我没列出来的。所以从这个列表看,你现在只具备了“编程语言、算法、数据结构”这部分最最基础的东西,做不出来成型的软件是自然的,非常正常。千万不要因此而妄自菲薄。

为什么说这是正常的?因为编程语言这类东西,充其量只是一把螺丝刀,你拿了一把螺丝刀,造不出来航空母舰,这很正常。

我们在初学时都觉得,我掌握了Java语法,学会了SSM,就应该能做出淘宝那类电商系统的后台。但实际上,不是这样子的。

顺序反啦!

正确的顺序是:

看到了一个问题(需求)

英语口语练习在线练习_unix练习_unix网络编程

脑海中孵化出一个产品(服务)来解决问题

用软件开发技术把这个产品(服务)实现出来

注意到了吗?做软件必须从上帝视角出发,从全知全能到一砖一瓦。

但我们上学、我们去培训,都是先反着教我们语言、算法、数据结构、工具,所以我们学了那些玩意儿,也不会做一个能解决现实问题、有实际价值的软件。

只有按照正确的思维来琢磨开发软件这个事情,你才可能真的做出软件来。

那怎样训练,才能具备从头到尾开发一款软件的能力呢?

学开车的过程是这样的:

在这个过程中,老司机就是那个开了上帝视角的人,他心里车、有路、有路况、有应对各种路上的肌肉记忆和应急方案。他帮我们照顾着全局,所以我们可以在某个细节上慢慢学习。

学了一个又一个细节后,打火、起步、直角转弯、倒库、变速、停车,细分步骤一个一个都掌握了,我们才到真实的环境中去练。练得多了unix练习,实践得多了,这些东西才能融合在一起,成为一种完整的能力:驾驶。

软件开发能力也是这么个训练过程。

当你学习了编程语言、算法、数据结构这些东西后,只相当于你懂得了如何打火、如何抓握方向盘、如何挂挡这些纸面上的知识。接下来你要做的是:

找一个具备开发软件能力的人给你当教练

让他给你设计一个实际的软件

让他帮你把软件拆分成一个一个的模块、一个一个的开发任务

你在他的指点下,一个一个去完成与你当下能力匹配的小任务

英语口语练习在线练习_unix网络编程_unix练习

注意,你现在要做的是第4步,也就是别人分配好任务,甚至把类的接口都定义好了、方法名字都起好了,你去填写方法内的代码。

等第4步练熟了,你就是一个能出点活的、入门级的程序员了。这个时候,你能够理解别人为什么这么拆分模块和任务,能够在别人的指点下完成一个软件的子模块。

然后,你就可以尝试着往第3步走。

再然后,可以往第2步走……

再再然后,往第1步走,给别人当教练……

有人说,我找不来教练啊,怎么办?

我曾经非常喜欢一本书,它在没人指点我时,给了我自己练习的指南,这本书的名字是——《Unix/Linux编程实践教程》(作者是 Bruce Molay),不知道现在还有得卖没。这本书会教你编写 who 、cp 、 ls 、pwd 等 Linux 系统命令,非常赞。

这类书,提供了一个自我练习的思路,就是:从小而完整的问题着眼,慢慢迁移到大而复杂的问题。

沿着这种思路,我还找了几个替代的办法,供你参考:

找足够小的问题来解决。比如统计文本文件中的单词个数、记事本、重命名文件、定时任务、待办事项列表、静态网站、博客、图片浏览器、复制命令、dir或ls命令等等。

找开源的项目,研究它某一个子模块,尝试着自己去实现。比如 ffmpeg ,研究它的 demux 模块,尝试着自己去解析 mp4 、mkv 等文件格式。

查看操作系统的自带软件和命令,比 notepad 、copy、dir、文件浏览器、ls、mv、cat、head、tail、find等,尝试自己去实现。

找一本项目实战类的书,操练书中项目。

找实战类视频课程,跟着练。

问你身边的人或者观察自己的生活,看有什么问题,是能通过软件解决的,尝试着自己去做。

最后,祝你早日踏入软件开发的领域,找到自己的一片天地。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!