`
ihyperwin
  • 浏览: 434640 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

编程的思想、数据结构、算法

 
阅读更多
只要掌握了编程的思想、数据结构、算法,使用不同的语言去表达是很容易的。

会了很多种电脑语言后,学一门新的编程语言,几乎只要花一个晚上看看官方的语法文档就可以立刻开始使用做东西了。最多就一个星期。

基本上,那些说长时间说自己在学C#,学java的程序员,都是2B程序员,他们完全不懂得程序开发中“思想”、“数据结构”、“算法”的本质,而将大量的时间耗费在语言实现的细枝末梢中,纯粹浪费自己时间。

不同的语言会有不同的特性,有一些特性是比较重要的,普遍存在于多种语言当中的,“学习”一种新语言,实际上仅需要查看文档,看这种语言是以怎样的语法支持这些特性而已。

=========

OO是影响很广的编程概念,基本上,是Enterprise Developer(注:企业级开发者)的圣经、法则。

ED认为,越OO越好。

基本上,计算机业界有两批人,一批是真正的程序员,或者说hacker,一批就是ED。

ED实际上是企业的工具,他们很少有自己创新的想法;企业说啥米,就做啥米。所以,会有大量的vender,提供工具、支持、新技术,去train这些ED。

典型的vender有微软、IBM、Oracle等等;这些vender为了向企业推销产品,他们就经常会鼓吹一些新的“技术”,然后打包成为解决方案,推销给企业。

为了鼓吹、宣传这些技术,还有一批企业是专门在“布道”的,他们是所谓的“咨询公司”。

这样的咨询公司,他们会专门聘用一些所谓“Evangelist”,屁事不做,整天四处布道,名头都很牛逼,如XX金牌讲师。

他们实质上,就是推销员,只是,他们推销的产品,是所谓的“新技术”而已。

微软在新加坡好像就招了不少Evangelist 。每隔几年,微软所推广的技术就会“革新”一次,Evangelist们就不断的四处去宣传新技术改变了一切,能够提高效率无数倍。

Evangelist本身的技术,很多是很差的;就好像推销员本身,是不会做产品开发、不懂技术的。他们仅仅是会宣传、鼓吹新技术而已;满口各种新技术名词,但他们本身,可能仅仅只是会使用这些技术写一个Hello World。

因为他们本身素质很差,所以,他们是无法分辨他们所推广的技术本身是否好,他们只是复读机。有时候,vender本身在推的技术也其实不错,但复读机们也会把它夸张到荒谬的地步。

OO就是一个典型。

OO仅仅是无数编程模型中的一种而已,但它被过度的夸张,诠释。

Hacker们写程序,基本不会去追求程序本身是否符合OO规范。Hack这个词的意义本身就在于打破规范。

但是,大多数的ED是很笨的,他们缺乏独立思考的能力,他们需要被Train,而无法自学。Hacker的那套,他们接受不来。

所以,才会有vender / consultant / 培训学校一系列的产业,去鼓吹:

OO、XML、SOAP、Web Service、Silverlight等等一系列伪技术。

有的ED,一辈子都无法意识到他们实际上是中了vender的圈套;无法掌握真正的编程技术,而沉迷于vender们所鼓吹的“新技术”,一代接一代。

然后,只要有其中的一代技术ED没能掌握,ED就立刻被淘汰了;因为这种ED,穷其一生都没有学会真正的编程;他们仅仅是学会了一代又一代的被封装的伪技术使用技巧而已。

伪技术的典型特征是封装。

它本身没有任何新的东西,只是把旧的技术封装一下,换汤不换药而已。

OO是最好的封装技术;所以它被无底线的推崇。

封装很重要;但是,对于程序员来说,掌握封装技术本身,跟学习使用别人封装好的技术工具;是两回事。

“程序员从此不再需要关心XXX”,这是evangelist最常用的宣传语句;2B ED,看了就很高兴,然后拼命去学习新的“技术”,把他们曾经掌握的XXX底层技术给忘掉。

微软所宣传的理念被Hacker理解为“Even monkeys can code”。ED被evangelist鼓吹的新技术洗脑,最终就是成为monkey而已;所做的工作,毫无技术含量;很容易被淘汰。

所谓的程序员30岁必须转行这种说法,便是源于ED被洗脑。

这种ED,从未掌握真正的编程技术,是必然被淘汰的。

“算法”、“数据结构”等,是本质;很重要,需要掌握,但一般开发时,很少需要自己去实现。

觉得多数开发,是“拚积木”。

即便是业务逻辑需要对一些数据进行排序,也不可能自己去实现一个quicksort算法;而是直接调用quicksort的现成类库。

这也直接造成了2B ED穷其一生都不能掌握真正的编程能力。

他们认为,能够“解决”问题就好,至于问题是怎么解决的,他们并不关心。

对于细节的认识、掌控能力,直接造成了水平的天渊之别。

以拍照为例子,以前人们用傻瓜相机,现在人们用iPhone去拍照;很快,很方便,还可以加滤镜。

但是,普通人们在不了解什么是光圈、精深、背光等概念的情况下,是没有可能成为摄影师的。

即便他们放下iPhone拿起DSLR。

普通人跟摄影师拍摄同样的东西;出来的照片也许会差不多,但如果深入去比较,景深、角度、光线、取景等等等等细节,则都会有差别,而这些差别积累起来,就造成了普通照片与摄影作品的差别。

画家要画好画,必然要对画笔、颜料、纸张的特性有深入的了解。

厨师要做好菜,必然要了解食材的特性,对调味料、厨具等有娴熟的掌控。

ED的“解决问题就好”,跟没有下过厨房的千金小姐拿着菜谱使用微波炉做菜没啥区别。

在大厨手里,微波炉也可以是神器;但:

“有的人,纵然神刀在手,亦无法成为刀中之神。”

程序员要“拚好积木”,那必然需要对积木的种类、材质、特性,有深入的了解。

总得对quicksort的实现有认识,才能够用好quicksort。在有的场景下,quicksort的性能反而是最差的。如果不了解,就无法去把quicksort用好。

程序开发中,有一个著名的 80 / 20 原则。

我想,这个原则也可以适用于ED。

程序员只要花20%的努力就可以成为一个混日子的ED;80%的程序员均是如此。

但如果要成为一个优秀的程序员甚至hacker,那么,需要花多至少4倍的努力。

有什么积木可以用?积木本身是怎么做的?积木A比积木B好在哪里?

这些,是需要花大量的时间去了解。

全部都是实在的经验积累,没有捷径。

都是.NET语言,C# 跟 VB.Net的差别在哪里?对于ED,他们偶尔也会对这样的问题感兴趣,然后,他们会去看介绍,看比较文章。。。。但其实,这事完全是木有用的。

他们看了别人的介绍,以为自己懂的,但实际上,他们只是在复读而已,完全木有懂。

作为一个ED,要了解C#跟VB.Net的差别在哪里,最好的方式,就是花时间去把两种语言都学了。用这两种语言分别去写个几万行程序,然后就懂了。

当某天ED成为Hacker的时候,那就反倒可以去看各种介绍,看一眼,然后瞬间就可以悟了。

这也就是为什么很牛程序员学习新语言可以那么快,因为有太多的知识可以复用;而这些知识的积累,必然是需要通过在实际中,无数行的实际编码,无数篇的资料阅读中得来的。

没有捷径。

很多初学者,或者说,编程的伪爱好者,他们,会热衷于去四处请教大师,下载各种经典书籍,企图读一本编程圣经,然后一夜脱胎换骨。

这是,不可能的。

这种伪爱好者,永远不可能成事;在学习的过程中,抱着去“走捷径”的心态,本身就已经是入了歧途;最终会花更多的时间。
分享到:
评论

相关推荐

    数据结构与算法分析电子书合集

    数据结构与算法分析是计算机科学中的核心领域,对于任何想要深入理解编程和软件开发的人员来说,这都是不可或缺的知识。这个电子书合集包含了23本相关书籍,其中包括经典著作如《算法导论》、《编程之美》以及《设计...

    数据结构和算法分析 C++版 第三版

    该书将数据结构和算法分析的基本概念和技术进行了深入的探讨,旨在帮助读者掌握数据结构和算法分析的思想和方法。 数据结构 数据结构是计算机科学的基础,用于存储和组织数据,以便于高效的数据处理和分析。数据...

    数据结构算法与应用电子书

    本电子书《数据结构算法与应用》以C++为语言工具,深入探讨了这一主题,对于学习者来说是一份宝贵的资源。 首先,我们来了解一下“数据结构”。数据结构是指在计算机中存储、组织数据的方式,它不仅包括数据的存储...

    数据结构算法与应用-C++语言描述_Sahni著

    《数据结构算法与应用-C++语言描述》这本书,由Sahni著,旨在帮助读者深入理解这些核心概念,并通过C++实践来提升技能。 本书可能涵盖了以下几个主要的知识点: 1. **基础数据结构**:包括数组、链表、栈、队列、...

    编程中五大常用算法,算法数据结构

    "编程中五大常用算法,算法数据结构" 编程中五大常用算法是指在编程领域中经常使用的五种基本算法,分别是分治法、动态规划法、贪心算法、回溯法和分支限界法。这些算法是解决许多计算机科学问题的基础。 在本文中...

    数据结构算法与应用-c++语言描述(代码与习题答案)

    C++是一种强大的编程语言,常用于实现这些概念,因为它提供了面向对象的特性以及底层控制,使得数据结构和算法的实现更为灵活和高效。 《数据结构、算法与应用:C++语言描述》一书深入浅出地讲解了数据结构的基本...

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    数据结构与算法 Java版

    数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于Java这样的高级语言。在Java中实现数据结构和算法,能够帮助开发者更高效地解决问题,提升程序性能。 数据结构...

    数据结构与算法-PPT课件

    数据结构与算法是计算机科学中的核心课程,它探讨如何有效地组织和处理数据,以及如何设计和分析解决问题的算法。这份“数据结构与算法-PPT课件”提供了丰富的学习材料,涵盖了多个关键主题。 首先,我们要了解数据...

    数据结构与算法分析java版

    - **章节简介**:递归是一种重要的编程思想,本章介绍了递归的基本原理及其在算法设计中的应用。 - **核心知识点**: - 递归的定义及工作原理 - 递归与迭代的比较 - 常见的递归算法实例(如斐波那契数列、汉诺塔...

    数据结构与算法分析C++描述_第三版源码

    在实际编程中,源码是理解算法工作原理的重要工具,通过阅读和分析这些源代码,读者可以更好地掌握数据结构和算法的设计思想,提升编程技能。 数据结构是计算机科学的基础,它涉及到如何有效地组织和存储数据,以便...

    哈工大数据结构与算法(第5版)课程PPT.rar

    总结来说,哈工大的《数据结构与算法(第5版)》课程PPT是一个宝贵的学习资源,它涵盖了这个领域的核心概念,对提升编程能力和问题解决技巧有着显著的帮助。无论你是初学者还是经验丰富的开发者,都可以从中受益匪浅...

    考研数据结构算法总结

    在考研中,数据结构算法的掌握至关重要,因为它直接影响到程序设计的效率和问题解决的能力。本资源“考研数据结构算法总结”正是为了帮助考生全面理解和掌握这一领域的关键知识。 首先,数据结构主要包括数组、链表...

    “数据结构与算法”课程学习总结报告

    总的来说,这门课程全面覆盖了数据结构与算法的主要内容,从简单的线性结构到复杂的非线性结构,从基本操作到高级应用,对提升编程能力有着极大的帮助。不过,对于部分复杂算法如希尔排序、快速排序、归并排序、平衡...

    数据结构与算法 Python语言描述 ——裘宗燕版

    通过阅读《数据结构与算法 Python语言描述》,读者不仅可以掌握数据结构的基本概念,还能学会如何用Python高效地实现这些算法,为编程实践和进一步的软件开发打下坚实基础。书中的实例和习题有助于加深理解,提升...

    郝斌数据结构算法与源代码

    《郝斌数据结构算法与源代码》是一份珍贵的学习资源,源自浩斌老师的教学视频,由个人手工编码完成。这份资料主要聚焦于数据结构和算法的实现,是深入理解计算机科学核心概念的重要辅助材料。在编程领域,数据结构和...

    Python数据结构与算法分析(第2版)1

    《Python数据结构与算法分析(第2版)》是一本专为对计算机科学和Python编程感兴趣的读者准备的书籍。本书旨在帮助读者理解数据结构、抽象数据类型和算法的重要性,同时提供Python语言的基础知识和实践应用。 在...

Global site tag (gtag.js) - Google Analytics