程序员

老程序员解Bug的通用套路!

千万不要当程序员面说有bug!对于新手程序员而言,在复杂代码中找BUG是一个难点。下面我们总结下老从程序员解Bug的通用套路,希望对大家有帮助。

1. IDE调试

根据项目特点和语言特点选择一个最合适的IDE,由于本人是做C++出身,最喜欢用的莫过于Visual Studio 了,这款微软开发的IDE,自从研发出来,就被称为宇宙第一编译器,能编译调试C/C++、C#、F#、Python、JavaScript、Qt、iOS等多种语言的开发。目前的VS2017还原生支持远程跨平台的软件开发,这无疑给我们常年奋战在linux/Unix黑匣子开发环境,使用G++调试的C/C++程序猿们带来了福音。

老程序员解Bug的通用套路!

2. 重构大法

如果你发现无论如何也找不到BUG,而且代码只是复杂,本身不是很长,直接重写代码吧!重构大法是解决爆炸性bug的绝招。

捋一捋开发人员的必备技能

对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。

本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径。

1、深入学习一门编程语言

没有掌握任何一门编程语言,就不可能成为一名编程人员。

许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工作的需要。虽然我认为开发人员最终会学习多种编程语言, 但建议不要在开始时这样做。 因为同时学习多种语言只会导致混乱,也会分散学习其它技能的精力。相反,我建议深入的学习一种编程语言,这样也会对使用这种语言编写代码感到非常有自信。

2、如何组织代码

捋一捋开发人员的必备技能

大龄程序员如何保持自己的职场竞争力

生活中经常听到或看到抱怨程序员吃青春饭,想转管理或者转行,其实转也无可厚非,只是有时候我们需要静下心,想想我们是被周围的喧嚣影响了导致我们浮躁而产生了一时的想法,还是真的想好了转,我们也不必举例国外的大牛五六十岁了依然敲着代码来安慰自己,毕竟那是别人家的大牛,我们是大龄程序员,在职场中还是有一些劣势的,公司更乐于招年轻的程序员,因为他们做事有冲劲,容易培养,薪水也可以低一些,也有更多的时间输出到工作上,对于公司来说,何乐而不为,有时候我们想转或许我们是想要逃避,而不是热爱或者擅长,即便转了,也可能做的不够称职。其实做职业的另一种选择之前我们要扪心自问,我是真的不热爱我现在从事的吗?还是只是临时遇到槛了,如果这样我们也要问问自己当时为什么选择这一行?其实大龄程序员我们也不用急,我们掌握好自己的姿势就行了。但前提条件是你热爱编程这个行业,否则趁早转行。

1、程序员要时刻跳出自己的技术舒适区,提高自己的竞争力。

浅谈程序员该具备的自我修养

各行各业的工作者,都有其要求,那么作为程序员,我们又该具备哪些素养呢?博主在这里浅谈个人看法,如有不当之处,请大佬们指正。

一、知识储备

1、数学

或许在很多人看来,学计算机用不到什么数学,最多也就是一百以内的加减乘除,用在for循环、数组索引之类的上面。但其实不然,大部分人这样觉得是因为基本都工作在应用层,所以相对而言,用到的数学知识会比较少,也比较浅显。

而当从应用层更深地学习研究时,就需要一定的数学能力了。

1)高等数学
在高数中我们学习到了重积分、级数等,这对于我们深入学习人工智能、学习图像处理以及我们对我们的程序进行更进一步地优化都是很重要的。

2)离散数学
很多院校都把离散数学作为计算机相关专业的必修课程,这是因为离散数学里面的图论等知识对于我们深入学习计算机算法知识大有裨益。同时离散数学的逻辑学也是我们控制计算机所必须了解的内容。只有了解了这些我们才能更好地完成我们的程序。

2、计算机

1)操作系统

关于CPU Cache -- 程序猿需要知道的那些事

本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识

作者:卢钧轶(cenalulu)
本文原文地址: http://cenalulu.github.io/linux/all-about-cpu-cache/

先来看一张本文所有概念的一个思维导图

关于CPU Cache -- 程序猿需要知道的那些事

为什么要有CPU Cache

想成为程序员,这些技能不能少

对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。

本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径。

深入学习一门编程语言

没有掌握任何一门编程语言,就不可能成为一名编程人员。

许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工作的需要。虽然我认为开发人员最终会学习多种编程语言, 但建议不要在开始时这样做。 因为同时学习多种语言只会导致混乱,也会分散学习其它技能的精力。相反,我建议深入的学习一种编程语言,这样也会对使用这种语言编写代码感到非常有自信。

如何组织代码

新手程序员在完成编程语言的学习之后,或者最好在学习编程语言的同时,需要掌握的是如何正确的组织代码。

通过Steven McConnell所著的《Code Complete》,可以帮助学习这个宝贵的技能。

shader程序员需要注意的优化Tips

在写shader的时候,其实一些写法对于其执行影响非常大,而且由于gpu和cpu在架构上的不同,代码的优化思想也不一样...

首先要树立几个思想:

1.gpu是SIMD的架构,即单指令多数据流架构,即在gpu上同时执行n个数据和执行1个数据的效率是一样的,我们要

尽量的把并行的计算搬到gpu上

2.gpu是以向量计算为基础设计的,也就是说在gpu上执行一个向量乘法和执行一个float的乘法的效率是一样的,

并不向cpu那样要多执行几次

3、通常,需要渲染的像素比顶点数多,而顶点数又比物体数多很多。所以如果可以,尽量将运算从PS移到VS,或直接通过script来设置某些固定值;

所以

1.尽量把一些计算合并成向量计算,记住一个向量计算和一个float计算那样快!
比如
float x,y;
x = x * a;
y = y * b;
不如写成 float2 v = float2(x,y);
v = v*float2(a,b);

因为前一种写法是两次乘法计算,而后一种只要1次

2.不要在gpu里面用分支或者条件判断这种语句,尽管大多数gpu 的shader支持这种语法,但是多数gpu里面的

东方程序员怎么看西方程序员?

东方程序员与西方程序员,彼此心中是什么样子呢?本文收集了东西方程序员对彼此的看法与各种印象,对于西方/东方程序员,你留有什么印象呢?

本文是作者根据StackExchange上的一个讨论贴:东方程序员眼中的西方程序员是怎样的?整理而来的,有网友发帖问:

在我看来,东方的程序员如何看待西方同行是一个有趣并且重要的问题。

通常认为东方国家(印度/中国/菲律宾)是为西方国家提供外包服务(美国和欧洲)的。

你有过参与离岸开发的经历吗?如果有,你对此有何看法?

那么对于西方程序员你有哪些印象呢(比如是否具有协作精神,是否按时交付产品,或者他们的工作质量如何)?

以下是来自东方各国程序员的答案:

一、印度程序员

Danish

程序员的十层楼

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。

那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大。

当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅代表个人的观点,如有不当之处,还请砸板砖予以纠正。

程序员的十层楼(1~3层)

第1层 菜鸟

第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层。

程序员这个职业会是另一个即将破裂的泡沫?

摘要:IT和一些低级别的编程工作最终会消失吗?这个工作是一个巨大的即将破裂泡沫吗?本文作者对此做了详细的分析。以下是译文。

作者:Tyler Elliot Bettilyon
翻译:雁惊寒

一位朋友最近向我提了个问题,这个问题我曾经在不同的论坛上听到过,虽然问题的形式不太一样:

“你认为IT和一些低级别的编程工作最终会消失吗?这个工作看起来有点像一个巨大的即将破裂泡沫。我认为,科技和低水平计算机科学相关工作能够“受人尊敬”以及保持高薪的唯一原因是这个行业中充斥着晦涩难懂的专业术语和公众对计算机的无知,而这两种情况在未来的10年里都将消失。”

这个问题既跟技术工作的未来相关,也是对软件工程领域误解的一个常见例子。虽然这个行业里确实有很多“晦涩难懂的专业术语”,但其中也存在着相当多的难题正等待着具备相应技能的人去解决。一些软件相关的工作正在慢慢地消失,但真正具备一定经验和知识的程序员们将继续会受人尊敬,也能拿到较高的报酬。最近的AI研究员薪水大爆炸和相应人才的缺乏正是印证了这一点。

同步内容
--电子创新网--
粤ICP备12070055号