计算机知识太多了,计算机基础知识对程序员来说有多重要?

原标题:计算机基础知识对程序员来说有多重要?

科班和培训生同比于自学者的优势就在于这些计算机专业的核心课程(数据结构与算法这种不管科班培训都要学的不算):离散数学、编译原理、计算机组成原理、操作与系统——乃至图形学和数字图像处理。

如果觉得太抽象学不进去,要么是经验不够写的代码太少,要么就是教材或者老师不给力——后者可以用csapp代替。

be332cdc9692513dac79c068583bc4ae.png

哪怕你考完就忘了,哪怕你毕业后写代码时还是要现场搜博客看怎么处理多线程问题,但至少,你对这些概念心里面是有印象的,遇到了问题,你心里有杆尺子——

1、如何从这个问题提炼关键字,上网搜索或询问;

2、这个问题对应哪个领域的知识,我应该直接去查“多线程 互斥锁”而不是查“为什么这个程序跑不对?为什么count不等于100?”

3、读代码、写代码时,起码知道,这里该用多线程组织生产者消费者关系,那堆数据应该用一个树来组织——这方面和设计模式很相似,为我们提供了在更高层面看问题的可能性。

2ee95a05092cd7970379a2401093d3f9.png

4、分得清工具链中各个部分的区别,不至于说mfc、qt、vc、c语言、c++傻傻分不清楚,都在参与几十几百万的项目了,还在到处问人“qt里能不能用FILE*指针?”

举个比较实在的例子,非科班的人,遇到问题是这么问的:

codeblocks 下载的是mingw.setup的,但是还是提示没有编译器?​

www.zhihu.comVC++6.0用MFC编译有一个问题。?​

www.zhihu.com如何使用Dev C十十画抛物线?​

www.zhihu.com

这样的问题,有的让人根本无从回答,有的问题一字不改百度一下都能搜到答案,有的完全是不会提炼关键字的结果……

049a4f83e4bd53168e8771660175cb84.png

而如下面这些问题,就充分体现了提问者自己的思考,他们是有明确的方向和目的去思索、去询问、去查询的,哪怕没人回答,这个过程都能有所收获。

(1)C语言如何实现面向对象功能?

其实,我对科班优势的这些描述,也适用于理工类专业——培养符合科学哲学的思辨能力。在遇到问题后,能够知道如何抽象问题,如何提炼关键,如何分析问题,然后基于抽象/提炼/分析得到的各个角度,去解决问题。

对于答复,小音是认同加佩服的和一些直接想甩baidu.apphb.com链接的问题,他都能从科学思辨的角度上,深入浅出地去分析,去解答,而且在让小白如各类题主能看懂的前提下,还能让我等围观群众有所收益。

理想的程序员

1、能跑

2、代码符号规范,使用工具确保符号规范

3、设计需要可扩展,确保设计能令某些情况下没用的部分不会做成额外的性能开销。

4、设计需要可测试,用单元测试保证基本没有BUG,使用帮助验证正确性的工具。

5、找出各种解决方案的时间复杂度和空间复杂度,过程可能需要查找文献及做组合灯工作。

6、考虑数据在内存中存储方式及访问特性,如对齐问题、时间和空间的连贯性,怎样减少存储量的系统及增加缓存一致性。

7、尽量跨平台,并且如需使用操作系统提供的功能(文件、网络、线程、进程等),选取最优解。

8、关注底层性能,是否适合用一些CPU指令(包括SIMD)、GPU或其他硬件解决。做性能剖析,看核心部分的汇编结果,再做实验改成优化。返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html未点击背景 点击背景,在AngularJs中点击状态如何改变背景色

下面我就为大家分享一篇AngularJs点击状态值改变背景色的实例,具有很好的参考价值,希望对大家有所帮助。实例如下://更改边框颜色的代码 $("#shname").css({"border":"1px solid red"});//排序有时候下标会错乱…

计算机应用考试其一级属于中级,计算机软件水平考试可以直接考中级吗?

原标题:计算机软件水平考试可以直接考中级吗?【http://jsj.kaoshib.com/rjsp/bkzn/76322.html】计算机软件水平考试呢,是对计算机与软件专业技术人员的一个职业资格、专业资格认定的一种考试,在某种程度上,计算机软件水…

计算机网络中ping命令的使用方法,ping命令的基础使用技巧

在电脑基础操作中,很多人在操作电脑中可以接触到这个ping命令。但是都是没有深入的去了解这个ping命令。对于ping命令在电脑中可以通过ping来判断及解决网络故障。我们每天都接触电脑使用互联网的人来说也是要去了解ping命令的基础使用。ping命令的工作原理&#xf…

计算机上硬盘显示不出来怎么办,加装硬盘不显示怎么办_新硬盘装上去了但是没显示这么解决...

一些小伙伴在加装玩新的硬盘后出现了一个问题,那就是硬盘明明安装上去了,但是电脑上没有显示出来。这是为什么呢?其实可能是因为安装没成功或者分区没有分好导致的,那么加装硬盘不显示该怎么办呢?接下来小编就给大家带…

武未转变服务器tp,未转变者怎么tp别人 | 手游网游页游攻略大全

发布时间:2016-04-24 我的世界中有的玩家想要TP别人,但是不知道怎么操作,有的新手玩家更是不知道TP是什么意思,那么这些就让小编来为大家解释一遍吧. 新手玩家请看我的世界手机版tp拉人怎么操作 TP操作…

搜狗语音输入提示服务器繁忙,讯飞语音输入如何提高识别率 提高方法

讯飞语音是一款语音输入软件,能够帮助用户进行通过语音说话,进行智能识别,帮助用户在繁忙的时候,直接语音输入,不过语言描述要清晰哦!小编在这里分享一下识别率提高方法,不要错过哦!…

服务器ie打不开http协议,在浏览器输入地址后,这个世界发生了什么(http协议浅谈)...

引言这篇文章是我各处收集有关于http的知识,不成体系,爱看不看?,看完点赞。我们输入网址之后发生的事情输入网址并回车(URL 包括 协议名称 域名或者IP 端口号 请求资源具体地址 参数)解析域名 DNS解析浏览器发送HTTP请求服务器处理请求服务器…

个性化显示服务器,Linux系统个性化登录提示信息的方法

字符界面操作久了,就没有太多的新鲜感,所以加点登录时的个性化显示,让心情变的更愉快!如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置&#xff0c…

微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性

微软测试其自去年以来的下一个版本的WindowsServer在内部测试程序中。尽管发布了常规的服务器测试构建,但Microsoft官员很少提供有关这些服务器测试构建中的特性和更新的任何公开信息。但是,在3月2日,官员们更公开地分享了即将发布的WindowsS…

leetcode 18 --- 4sum

1 题目 给出一个有n个元素的数组S,S中是否有元素a,b,c和d满足abcd目标值?找出数组S中所有满足条件的四元组。 注意: 四元组(a、b、c、d)中的元素必须按非降序排列。(即a≤b≤c≤d)解集中不能…

leetcode 111 --- 二叉树最小深度

1 题目 求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。 2 解法 2.1 递归方法 要找到最小深度,首先要确定有根到叶的第一个叶节点,也就是一层一层确定.所以有: /*** struct TreeNode {* int val;* struct TreeNode *left;* struct…

leetcode 145 --- 二叉树后序遍历

1 题目 用递归的方法对给定的二叉树进行后序遍历。 例如: 给定的二叉树为{1,#,2,3}, 返回[3,2,1]. 示例1 输入 {1,#,2,3} 输出 [3,2,1] 2 解法 2.1 递归解法 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/c…

leetcode 144 --- 二叉树前序遍历

1 题目 求给定的二叉树的前序遍历。 2 解法 2.1 递归解法 2.2 非递归解法 前序遍历,先遍历根节点,然后遍历左节点,最后是右节点,所以用栈的方式,先是根节点入栈,然后出栈遍历,如果该节点有左右节点,那么左右节点入栈(应为右节点先入栈,然后是左节点,因为左节点先遍历,所以…

leetcode 116 --- 填充每个节点指向最右节点的next指针

1 题目 填充每个节点指向最右节点的next指针, 填充所有节点的next指针,指向最接近它的同一层右边节点。如果没有同一层没有右边的节点,则应该将next指针设置为NULL。 初始时,所有的next指针都为NULL 注意: 你只能使用常量级…

leetcode 110 --- 判断给定的二叉树是否是平衡二叉树

1 题目 判断给定的二叉树是否是平衡二叉树 平衡二叉树的性质为: 要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过 1。 一颗树的高度指的是树的根节点到所有节点的距离中的最大值。 2 解法 2.1 多次递归 最初的想法肯定是先求出每个节点的左右…

leetcode 107 --- 二叉树程序遍历 ii

1 题目 给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历) 2 解法 2.1 我的最初解法 按照正常的层序遍历应该是从上到下的,只要用一个栈先临时存一下每…

leetcode 148 --- 链表排序

1 题目 链表排序 2 解法 2.1 冒泡排序 /*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution { public:/*** * param head ListNode类 * return ListNode类*/ListNode* sortList(ListNode* head) {// write code hereif (head) {ListNode* endNo…

leetcode 1 --- 两数之和

1 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 2 解法 struct haveOrigionIndexNu…

leetcode 2 --- 两数相加

1 题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设…

leetcode 9 --- 回文数

1 题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 2 解法 2.1 初版 2.1.1 思路 由于题目不允许把数直接转化为字符串, 所以想到了把数的每一位转换为双向数组, 然后对头尾一点…