技术开发 频道

编程世界中算法还重要吗?

  【IT168 评论】我为什么要问这个问题呢?其实这最近一周时间都在看算法在数据挖掘和存储处理性能上运用. 当然这也引起我个人的一些对算法的思考.正好昨天晚上看到一篇关于算法文章.更是激发我要去写这篇文章,躺在床上一直在想这个问题怎么能清楚的说出来. 也许你看到这个标题 你也工作了几年 回过头在来看这个问题 也许一时间会感到疑惑. 算法还重要吗?

  <1>什么是算法?

  我们先不要给算法是否还重要就轻易下了一个结论. 到这我也先不着急给算法下定义做解释. 我们现在先来看看一种现象: 哪种语言是开发者们可以高高兴兴的用来编程的?近日,一位美国的开发者通过Twitter对开发者们进行了一项调查 :你是否喜爱XX语言 调查结果分析图:

  基本上每个月都会有一些相关对语言使用程度做了一个排名. 大家业见怪不怪了. 编程语言又能体现出算法相关价值,也许你会好几种语言, 但随着工作时间增加和对技术深入研究你会发现: 不是具体的技术而是算法这些基本的东西成为了技术深入的软肋, 特别是在紧要关口 这个软肋往往就会更疼.

  起码我认为自己目前工作创造性东西比以前少了很多. 很多算法已经被包装到了语言和工具中, 作为一个开发者也就不想以前那样费力去学习. 而往往有些算法只适用于本语言或工具而且只能解决某些问题,移植到别的情况下则无法使用, 这也是我在开始学习Ruby后才感到算法适用范围有所不同. 最为别扭的是你发现以前在用Asp.NET和Visua4l Studio开发工具中对于有些问题已经界定好思路. 人都是懒惰 既然有现成的东西不用 为何要费力去创新. 这也就导致长期适用单一编程开发者视野上狭隘. 开发者很难有属于自己的思维方式. 这就是为什么有些人说自己做到一定程度后成了熟练“代码工人”也不难解释. 起码这个问题让我感到很悲哀.

  Ruby之父松本行弘[日本同行]就曾表示,注重的是算法而不是工具, 如果没有自己的思维方式和编程逻辑,很容易对某种具体的技术或者工具产生依赖性, 而这些编程工具和技术往往是国外开发. 假设有一天我们没有这些现成的工具 和技术 我们该怎么办? 岂不是成了一穷二白了吗?但是如果有了稳固的算法思维 编程世界里东西都不可怕.

  算法是一种本质的回归。

  今天出了JAVA 明天出了一个C#. 后天还不知道要出了一个什么 XXX¥¥语言和新技术. 于是乎你也成了那赶潮大军中一员 一路疲惫被人牵着鼻子走, 到头来你发现越深入步伐走得越慢. 越是吃力.往往技术了解得越多、做得东西越深,这样的体会越明显, 借用一位网友的话说就是"内功”不到位. C# java Ruby 只是两个你用来练习武功的招式, “内功”则是这些花哨武功招式后本质, 招式可以很多种 如果没有 ”内功” 招式变换再多也只是表面文章 罢了. 注定你是成不了一个名副其实的”武林高手”

  看完了这个现象后 在回头来说算法定义. 算法(Algorithm)说白了就是是解决问题的步骤.可以把算法定义成解决一个分类问题的任意一种特殊的方法.

  编程世界中 算法+数据结构=程序.

  而数据结构往往是封装在不同编程语言中. 求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序,来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。算法和程序之间存在密切的关系的.

0
相关文章