当前位置:网站首页>【新手上路常见问答】一步一步理解程序设计
【新手上路常见问答】一步一步理解程序设计
2022-06-13 06:13:00 【苹果二】
目录
为帮助开发者小伙伴快速学习快速提高,我开辟了《新手上路常见问答》栏目,将大家的问题汇集起来,希望能给大家一些快速导引,避免给自己挖坑,少走弯路。
如何为不懂程序设计的人解释程序设计并帮助他们理解程序设计?今天聊一聊。

图片来自网络
1. 程序设计需要怎样的思维?

图片来源:
我曾编过这篇文章【哲思与实战】计算机思维 Computational Thinking,我们每个人都具有计算思维,它是人类突破局限解决问题的途径之一。计算思维涉及运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。计算思维是一种递归思维,它是并行处理。计算思维根据准确性、效率和美学因素来评价程序,计算思维要求评价系统设计时还要考虑简洁和优雅性。计算思维采用抽象和分解这两种方法设计复杂的系统。计算思维通过冗余、纠错的方式在最坏情况下预防、保护和恢复。计算思维利用启发式推理寻求解答,在不确定情况下规划、学习和调度。计算思维需要平衡空间和时间,平衡处理能力和存储容量。计算思维影响了很多学科,比如计算思维中的机器学习改变了统计学。计算生物学、计算博弈论、纳米计算、量子计算分别改变了相关领域科学家的思考方式。计算思维要求人们能在抽象的多个层次上思维;计算思维不是要求人类像计算机一样思考;计算思维要求人们融合数学和工程思维;计算思维是一种思想,我们可以利用其解决问题、管理日常生活以及与他人互动交流。
2. 程序设计者要具备怎样的性格特征和思维能力?
我曾写过 【趣说】程序猿/媛特有的个性魅力_苹果二的博客-CSDN博客
和【软件开发与人】做一个快乐的程序猿/媛,谈到过程序员们通常具有的特征,他们谦虚、诚实、肯于承认自己的错误、有耐心、有着好奇心和强烈的求知欲,懂得与他人合作,有创造力却也遵守一定的纪律,懂得坚持也懂得放弃,紧跟潮流,坚持学习,会用高明的手段偷懒,有些好习惯。
Pete Goodliffe在《编程匠艺》一书中风趣地写道,理想的程序员应该是政治家,能够和各种各样软件的利益相关者合作,比如管理人员、测试人员、支持人员、客户或者用户等等。

图片来源:What is a Stakeholder? (Definition and Examples) | Glossary
他们是亲切的人,可以愉快地与别人合作,具备良好的沟通技巧,善于演讲也会倾听。至于怎么做,可以参考【实战技能】关于开发者的沟通技能_苹果二的博客-CSDN博客_开发人员的沟通能力
【提高逻辑思维能力的好习惯】词要达意和有效沟通_苹果二的博客-CSDN博客
他们是艺术家,可以设计出优雅的解决方案。
他们是技术天才,代码很稳定很好用,拥有广泛的技术能力,不局限在某一个狭窄的领域,也就是我们今天说的全栈人才。

图片来源:The Myth of the Full-stack Developer
从思维能力来讲,优秀程序员应具备良好的分析能力,逻辑思维能力和抽象思维能力,良好的阅读和写作能力。
3. 读哪些书可以入门学习程序设计?

这本书的官网地址是:How to Design Programs
Matthias Felleisen Robert Bruce Findler , Matthew Flatt和 Shriram Krishnamurthi 所著的How to Design Programs: An Introduction to Programming and Computing 一书,中文版名称叫《 如何设计程序:程序设计和计算引论》,是一本程序设计教科书,讨论如何从问题描述到最终写出组织严谨的程序。书中没有强调算法和语言细节,而是专注于教授程序的设计过程,也不阐述某个特定的应用领域。这本书通过给出一系列明确的程序设计指导,引导学生一步一步地从问题的描述出发,通过明确定义的中间过程,训练阅读、分析、组织、实验和系统思维能力,最终写出程序。书中使用了一个全新的程序设计环境。程序设计环境会随着学习者所掌握的知识的多少而改进,该环境最终可以支持完整的 Scheme语言,使用该语言既可以编写大型程序又能编写脚本程序,可以完成所有领域的编程任务。
荣获2008年Jolt大奖的Head First Programming: A learner's guide to programming using the Python language也不错,面向没有编程知识的初学者,通过一贯经典的图形化轻松的方式教会读者,读者可以了解所有编程语言的核心功能,包括:变量,语句,决策,循环,表达式和运算符。读者学会使用函数重用代码以及使用库代码以节省时间和精力,还可以选择最佳的数据结构来管理复杂的数据,学会编写与Web通信的程序,和其他程序共享数据以及编写测试代码的程序。

图片来源:www.amazon.com
如果我们能容易地为帮助大家理解程序设计,我们自己对程序设计的理解也会不断加强。我们自己的程序设计能力也可能变得更好。
欢迎留言讨论,如何做好程序设计。
边栏推荐
- JVM基础
- Wechat applet: basic review
- Regular verification of mobile phone number, landline email ID card
- Wechat applet jumps to H5 page with parameters
- 1016 part a+b (15 points)
- [JS] array de duplication
- Fichier local second Search Tool everything
- Rk3399 hid gadget configuration
- Status management --provider
- 微信小程序:全局状态变量的使用
猜你喜欢

Wechat applet custom tabbar (session customer service) vant
![[spark]spark introductory practical series_ 8_ Spark_ Mllib (upper)__ Introduction to machine learning and sparkmllib](/img/39/501b9b8962b03cfc59e2636f88ee93.jpg)
[spark]spark introductory practical series_ 8_ Spark_ Mllib (upper)__ Introduction to machine learning and sparkmllib

1+1>2,Share Creators可以帮助您实现

Echart柱状图:x轴显示value,y轴显示类别

The boys x pubgmobile linkage is coming! Check out the latest game posters

MySQL trigger

Echart histogram: X-axis displays value, Y-axis displays category

端午安康,使用祝福话语生成词云吧

Echart柱状图:echart实现堆叠柱状图

After clicking the uniapp e-commerce H5 embedded applet, the page prompts "the page iframe does not support referencing non business domain names"
随机推荐
Detailed explanation of PHP distributed transaction principle
[solution] camunda deployment process should point to a running platform rest API
Echart柱状图:堆叠柱状图显示value
Echart矩形树图:简单实现矩形树图
Win10 drqa installation
超有范的 logo 在线设计制作工具
Free screen recording software captura download and installation
免费录屏软件Captura下载安装
Wechat applet uploads pictures (preview deletion limits the size and number of pictures)
Uni app disable native navigation bar
pthon 执行 pip 指令报错 You should consider upgrading via ...
AI实现亲人“复活”|老照片修复|老照片上色,免费APP推荐
推荐扩容工具,彻底解决C盘及其它磁盘空间不够的难题
USB 0xc0000011 error
Audio stereo to mono (Audio Dual Channel to mono channel)
Not in the following list of legal domain names, wechat applet solution
Pod libwebp error reporting solution
Uniapp mobile terminal uses canvas to draw background convex arc
Fragment lifecycle
【var const let区别】