bat 的blog

澄清学习编程的10大误区

在编程行业,一直流传着很多误区。下面让我们一起来纠正10个有关编程的常见误区,以帮助编程初学者或有志成为程序员的人,更理性地认识编程。

1. 学习编程必须得学习数学吗?

“学习编程必须得学习数学吗?”,对于这个问题,很多人并不清楚数学与编程之间的关系,他们往往只想得到一个统一的答案:“是”或者“不是”。事实上,答案不是绝对的,它要看情况,不过在绝大多数情况下,答案是“不是”。作为程序员,你会花很多时间在写代码上,而不是写数学公式,而且你的数学知识不会直接构成你的编程技术。

但这不是说你不需要学习数学了,你仍然需要懂得基本的代数学,只是基本的而已。另外,现在还有很多库和插件,你可以直接应用到编程中,帮助你解决数学和算法方面的问题。不过,如果你想尝试创造的东西是需要高级的数学计算或是物理或计算机图形的话,你肯定需要掌握某些数学知识了。

2. 学习编程的人的IQ都要很高吗?

10种常见的软件架构模式

有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构。

根据维基百科中的定义:

架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。

在本文中,将简要地解释以下10种常见的体系架构模式,以及它们的用法、优缺点。

一. 分层模式

这种模式也称为多层体系架构模式。它可以用来构造可以分解为子任务组的程序,每个子任务都处于一个特定的抽象级别。每个层都为下一个提供更高层次服务。

一般信息系统中最常见的是如下所列的4层。
• 表示层(也称为UI层)
• 应用层(也称为服务层)
• 业务逻辑层(也称为领域层)
• 数据访问层(也称为持久化层)

使用场景:
• 一般的桌面应用程序
• 电子商务Web应用程序

开发者需要知道的有关软件架构的五件事

作者:Simon Brown
译者:薛命灯

2010年,作者写了一篇叫作“Are You a Software Architect?”的文章,探讨了软件开发者与软件架构师之间的区别,以及如何从一名软件开发者转成一名架构师。8年过去了,软件行业也在发展,但开发团队仍然面临着类似的问题,特别是与软件架构有关的问题。这些问题比以往任何时候都要来得突出,因为我们现在构建的系统越来越趋于分布式化,开发团队也越来越分布式化。为了解开这些迷思,开发者需要了解以下五个与软件架构有关的事实。

1.软件架构不只是前期的“大设计”

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

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

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

深入学习一门编程语言

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

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

如何组织代码

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

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

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

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

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

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

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

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

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

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

一、印度程序员

Danish

程序员的十层楼

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

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

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

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

第1层 菜鸟

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

专家教你利用深度学习检测恶意代码

当前,恶意软件的检测已经成为全社会关注的网络安全焦点,因为许多时候,单个恶意软件就足以导致数百万美元的损失。目前的反病毒和恶意软件检测产品,一般采用的是基于特征的方法,它们借助人工设定的规则集来判断某软件是否属于某种已知的恶意软件类型集合。通常来说,这些规则是具有针对性的,即使新出现的恶意代码使用了跟原来的恶意代码相同的功能,检测软件通常也检测不出来。

所以,这种方法是无法令人满意的,因为大部分情况下二进制文件都是非常独特的,或者说是以前从未见过的,并且,这个世界上每天都有数百万个新的恶意软件样本被发现。所以,我们需要开发一种能够适应日新月异的恶意软件生态系统的检测技术,而机器学习看起来非常有希望满足我们这一需求。事实上,一些初创公司和老牌安全公司早就开始着手构建基于机器学习的防御系统了。为了获得高质量的防御系统,这些公司通常都需要在特征工程和分析方面花费大量财力和精力。然而,如果我们是否能够在无需借助特征工程的情况下构建反病毒系统呢?果真如此的话,我们就能将同一系统部署到不同的操作系统和硬件上检测恶意软件。在我们最近发表的研究论文中,我们的研究成果向这个目标迈出了坚实的一步。

用于数学的 10 个优秀编程语言

作为一个对数学和编程语言充满激情的人,谁也不能阻止我分享我总结的10个超棒的用于数学的编程语言。

总结的目标在于多样化,为大家提供广泛的编程和问题建模方法。

编程语言描述摘自它们各自的网站或维基百科页面,但里面也加进去了我的一些看法。

1. WOLFRAM语言

Wolfram语言是Mathematica和Wolfram编程云的编程语言。

它是由Wolfram Research开发的一种通用的多范式编程语言。它被设计得尽可能通用,并且强调符号计算,函数式编程和基于规则的编程。

语言非常大,涉及众多领域,通常较为专业化。

我的看法

这是一种相当好的函数式的基于规则的编程语言,可以非常好地处理符号计算。也就是说,就编程语言而言,我并不觉得它特别优雅。

它的真正价值在于其庞大的多领域标准库,尤其是对于数学应用程序,几乎领先于世界上任何其他编程语言。点击查看演示,很大可能会给你留下深刻印象。

2. MATLAB / GNU OCTAVE

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

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

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

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

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

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

程序员薪酬到底有多高?来看硅谷的工程师统计

Triplebyte一个被誉为程序员求职神器的求职平台,主要面向软件工程师,并和硅谷的科技公司合作。

它和其他求职平台较大的区别是:Triplebyte自己会面试求职者,相当于将技术面试作为一种服务提供给公司,给公司招人省去一部分成本。

程序员薪酬到底有多高?来看硅谷的工程师统计

他们上来先不看求职者的简历,而是要求求职者先参加他们的技术筛选流程,然后对求职者能力进行评估。而根据他们和客户公司之间的协议,Triplebyte推荐的求职者能直接进入公司的最终面试阶段而不必经过考核。
程序员薪酬到底有多高?来看硅谷的工程师统计

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