非常同意老师的观点

人们的工作不仅是为了生存
而是发挥自己多的想像空间`而不是造人家设计好的路子进行编码
更多的是个人的“艺术”表现手法```
嗯~ 说得好!
太长了,看了一页就看不下去了。其实观点已经很明确了,专注于API和模式的应用而放弃对数据结构和算法等基础的学习,只能让你成为一个合格的coder,而不是programmer。不要以为会了几个框架,就认为自己是软件工程师了,仅仅是个高级的打字员。当换了新的框架后,你就得马上学习新的框架了,不掌握核心的东西,只能是被人牵着鼻子走。

想在计算机领域混口饭吃,还是好好学好这些基础的东西吧,当有一天越来越多的人会了你学的那些框架的东西,你就等着失业吧,那时真的是在农村找个初中毕业的,让他学几天,他也可以写代码,不过仅仅是个coder。

我认为算法、数据结构等基础不重要,尤其是查手册能查到的东西。
对于算法,完全可以在将来系统的部分需要用到的时候再去仔细分析和设计,甚至现学。而不是先学好算法再去设计软件。

api我从来不刻意背,遇到问题的时候我再去找api手册。但抽象问题的能力是查不来的,虽然这说到底是智商问题,但通过后天培养还是能提高的。而“软件设计”首先就是要分析并抽象问题,然后才是具体的解决方法。所以入门要从分析入门,然后细化到一个具体的地方再加以深造。比如算法、比如UI人性化等等。

再比如我有一个开发web站点的新方法的设想,但其中一些细节并不是我的知识领域内的东西,不过我可以再去学习那个方面。如果要先学算法等基础,再往上学,恐怕我这辈子都想不出来这个新方法。

计算机世界很神奇,甚至可以说没有做不到,只有想不到。先想再做嘛。

凑个热闹。
搞Java这一口,J2SE一定要学好,Core Java和Think in Java要熟读两三遍,这个功夫不能省。本人前一阵再次重读二书,仍有收获。这就好比外语学习中的单词,不熟是不行的。
下面就是banq所说的设计模式问题,也要下大功夫,这是如何写文章的问题。
之后,至于写什么样的文章,就各自发挥了。
本人计算机专业本科,做java四年了,对什么算法、数据结构只知道些皮毛,当年数据结构没及格补考才勉强过的,平时就是用HashMap/ArrayList/String数组等常见结构,觉得基本够用了。线程操作也很少涉及。
平时最得力的工具就是Spring/Hibernate这样的流行框架,觉得他们流行还是有道理的
另外最看重的技能就是设计模式和敏捷开发方法了

开发过的软件也都不简单,包括关键的企业级分布式应用,所谓关键是因为涉及到对钱的操作

目前的身份是SE,月薪接近10k,不怎么加班,并且没觉得短期内有失业的危险。。。

我很敬佩那些作基础研究的人,但也不觉得做应用开发就低人一等,技术没有高低之分,做技术的人却层次不一,你不会觉得Spring之父也是高级打字员吧?
学习新知识的能力最重要,不要以为基础的东西学好了就万事大吉,有这种心态的人危险了!

I think in china, we all confuse sciensce and engineer.

What we study in university is to be a computer scientist.
what is scientist?
Do sth that someelse has not yet done in theory.

What is engineer?
Do sth in a good way but in theory, it is already workable and doable.

with the times , the science will convert to engineer.

But chinese education normally confuses two stuff in a chaos.

Like I mentioned before, computer science is a layer theory.

you must know you are which layer's programmer.

what we study in school is called fundamental. but finally you will argue what the hell the compiling theory does with the upper level part such as XML, code generation blabla....

That is the chinese education obsoleted reasons.

The lower layer stuff which u study in school seems useless in application level programming but some methodology are still reused in the upper level. That helps you to well understand the new technology.

OO design is one of the fundamental also. but lots of university are busy with stocks now. definitely not take teaching seriously.

if you missed time to study these fundemental, just let it be but one thing is still worth reading, design pattern, parallel programming design

第一页最精彩....
后面的无趣了....

世界在发展...分工越来越细致...也许以后有名称叫做oo家或者算法家

完全是看你走哪一条路...

大家关注的方面不一样,得出来的结论自然不一样。我感觉算法,数据结构更多的是面向微观的,即上面一个朋友说的武功,而宏观的来看,当然是模式,框架,OO的思想更为重要,归根到底,这取决于你所处的领域。如果你是搞底层开发的,你一定得熟悉算法和数据结构,但是如果是从事应用软件开发的,那又何必重复发明轮子呢?已经有很多现成的API来用了,比如java的API,你没必要去自己写,别人的API都是比较有经验的开发者写出来,并且经过大量实践检验过的,大部分情况下要优于自己写的代码。一个优秀的程序员,最重要的就是解决问题的能力。对于底层系统开发者(操作系统,数据库,或者中间件等开发)来说,数据结构和算法无疑是最重要的,可是,对于应用开发来说,更需要的是大局观,怎么使用组件来搭建一个灵活,维护性好,性能强大的系统。举个不恰当的例子,应用开发好比拿现成的砖瓦来盖大楼,而底层开发则是研究怎么样制造出来的砖瓦更为坚固,你让你个建筑师来整天研究砖头的n种烧制方法,钢筋的n中铸造方法,似乎显得很可笑。同样的,去请教一个材料工程师怎么样用他研究出来的材料盖一所大楼也很可笑。所以说,不同的视角,有不同的答案,取决于每个人所在的领域。建筑师不必关注砖瓦,材料工程师不必关心别人怎么盖房子的。
to xuanyuanzhiyuan

对操作系统,中间件等底层开发来说,可重用性和可扩展性更重要。
应为他们要被多种应用程序使用,并且寿命也比应用程序长。

而应用程序大部分是一槌子买卖。虽然Banq反复强调软件是有生命的。但是大家都知道,软件是不是一槌子买卖是由商业利益决定的。大部分软件的寿命远远小于OS。

而且相对于软件设计师而言具建筑设计师的例子并不合理。建筑设计师只做外观设计,相当于软件中的UI设计。而建筑的结构设计是由土木工程师完成的。很难想象一个土木工程师完全不懂材料。
机械设计师的情况也类似。虽然机械设计师并不负责如何生产出一个零件(这由工艺师负责)。但是设计师在设计时不考虑工艺问题的话,就会造成生产成本大大增加,甚至完全造不出来的情况。

软件设计师的地位相当于土木工程师,机械设计师。不懂底层的话,运气好的话就是成本上升,性能低下,运气差的话,就彻底搞糟。

皮之不存,毛将焉附。基础永远是最重要的。
呵呵
精彩·看了这贴子我马上想回复
于是立即注册
在下有个愚见不知拖否?

观点:专业决定你的基础(banp老师的支持者)

曾经我们叫计算机专业
现在我们叫计算机软件专业
今后我们会不会叫计算机软件对象使用专业(或对象编辑专业)呢?

社会的分工几千年前就开始了,计算机软件的工分也从开始就有了,OO的思想是软件新一层次的分工标志

我们有向汇编方面发展的人才,有向C方面发展的人才,有向java方面发展的人才
这叫“专业”,无非是各施工其职罢了,这里我们没有任何争议

你是什么专业的,你要确定你的专业,并确定与你专业相关的知识进行学习。如果你想写对象那么请把现在所谓的软件基础学好(数学,数据库,数据结构等等),再如果你不想写对象只想用对象就请你学好你的基础(语法、对象的用法。什么数据库、数据结构、数学了解了解就好了因为你的重点不在这里)

那我们看一个例子:
美化照片的工作大家都知道吧
美工人员-》使用某某照片制作工具-》美化照片-》导出经过美化的照片

这里我们的美工人员需要知道工具里是如果读入照片的吗?不需要
需要知道工具里是怎么处理照片的吗?不需要
需要知道工具里是怎么导出照片的吗?不需要

OO的思想就是面向对象的编程思想

我们美工人员其实也是一种面象对象的开发她开发出了一个很棒的对象不是吗?
一幅美丽的照片里面一个纯情的少女
其实OO的思想早就有了,我们只是没有分化出来而已


做为对象使用者的我并不懂数据结构如下:

一个对象有N个属性(name,age.....) 这个对象的名字为person,它有get/set的方法
age 的数据结构是从数据库中取出出生日期然后减去现在的日期

在这里OO的编程者它构造了person这个类想取出age的值
直接person.getAge();//OK

请问这个编程者需要懂得数据结构吗? 不需要,她需要懂得的是这个类怎么用,OK?


OO是编程的思想它没有说什么东东不重要(如:所谓的基础,基础当然重要啦,但是这是你的专业吗?如果是务必学好它,否则有兴趣就看看)


我个人认为随者软件编程的发展今后将把学习oo思想的人分为两个流
一、对象编写者:需要懂得数据结构、数学知识等等,面向过程的程序员所需学的
二、对象使用者:需要学习类的用法(如SDK的类库,学j2se你会用类库吗?)其它可以莫无关心,如果不嫌累大可以研究类的数据结构(当然是吃饱了撑者的人做的事)

“专业决定你的基础”

说主题:j2se的基础的重要性在于:理解OO的思想,学习SDK类库的用法,闲来无事者看看类结构,和你爱的人一起学习那乏味而有趣的数学<这可是美事呀>:)

在下QQ:55380559哈哈哈 :)喜欢的交个朋友
专业在于永无止尽的追求!

>>好吧,运用你的设计模式,运用你的DDD,麻烦你给我设计一个公交查询向导,我可以输入两个站明,你告诉我怎么倒车,如果你愿意实现实现最近距离以及最少倒车次数,我更加欢迎。

我觉得这道题目出的就不好,好的路线设计,城市任意两点之间,很容易实现最多二次换车到达,这时候甚至都不需要什么算法。如果你说你们城市有些地方之间不能二次转通,那你不如先去解决这个问题。

bang老师您好!我是刚刚学java的初学者,在企业工作。现因工作需要,进行web开发方面的工作。想用java这项技术来实现企业中的一些功能,要求在最短的时间内完成一些小应用模块,我们这是一个团体,希望借助大家的力量来完成这项工作。但,java的分支太多了,不知道从哪里著手了。请帮助指点!多谢了!
我个人认为 banq老师的JAVA思想是对的,我的QQ:417860345