何谓编程思想?

2011-02-09 08:23:20 +08:00
 julia
我朋友说,搞编程是要慢慢形成自己的编程思想,不能局限在语言自身层面。各位能谈谈吗?
7971 次点击
所在节点    程序员
20 条回复
myrual
2011-02-09 09:32:42 +08:00
编程9年了,我觉得自己还是没啥编程思想。
面向对象的编程思想不懂,设计模式不懂。
目前仅仅坚持一下几个原则:
先做一个简陋的,然后慢慢丰富。
先用笨方法实现,然后用高科技重构一下。
随着丰富的过程,不断的把代码按着业务逻辑分成模块。
不断的重新回头看代码,然后把不好的地方修改掉。
julia
2011-02-09 09:45:41 +08:00
@myrual 前辈是否太过谦虚!我朋友不过才学了一年,看了几本书,就敢说自己有编程思想,难道真是天赋问题!
roamlog
2011-02-09 09:57:08 +08:00
我觉得个人的编程思想还是比较难形成的,大部分人只是掌握了一些编程方法或叫编程理论,oop、设计模式、重构和测试驱动开发等等都是前人总结的方法或理论而已,无需太过纠结于此
dreampuf
2011-02-22 13:44:13 +08:00
编程思想能否理解为"编程经验".只有有了经验,慢慢得才会形成思想.
imstand
2011-02-22 13:48:10 +08:00
两个视角,从硬件看代码,从需求看代码。让信息流在你眼里透明。
zhouhua97
2011-02-22 15:33:56 +08:00
你朋友的思想不知道是什么思想,但是觉得不管什么思想还是要从实践中来。
zhaiduo
2011-02-22 15:34:12 +08:00
感觉编程思想应该是经验的总结吧,很多新手一开始就去学设计模式,这个不太合适啦。
WarWithinMe
2011-03-01 12:33:47 +08:00
@dreampuf 同意。。。思想从经验来。。@zhaiduo 个人觉得设计模式更在于实践,大摇大摆的说自己懂设计模式的人,其实是说他能背出其中内容,未必就能灵活应用到实际的问题中。
welling
2011-03-11 19:31:24 +08:00
我的理解是,复用复用,再复用.
momo5269
2011-03-18 05:55:12 +08:00
我觉得编程思想是通过长时间接触和大量实际运用得到的经验,而这些经验能够告诉你编程语言作为“语言”的本质是什么,可以用来干什么。不同的语言是不同的思维模式,编程语言也一样:是不同的表达方式和解决问题的办法。

不过我不是程序员,你可以无视我的话。
obiwong
2011-03-20 01:39:57 +08:00
我想你朋友的意思是建议你不要去钻语言的奇淫技巧,比如C语言的「c+++++c+++c++值是多少」诸如此类问题,而多去关注解决问题之道,比如「清晰胜于机巧」、「策略同机制分离」等。

不过我认为「语言自身层面」和「编程思想」谁更重要是个见仁见智的问题,两者并不具备可比性:谁能证明出乘法和加法哪个更重要呢。不管哪方面,能做到极致就是大师。

「语言自身层面」是指的是某一种语言的的特性,上面举的c+++++c+++c++例子比较极端。不那么极端的例子是C++的机巧or取巧模版元编程或者是perl那如诗般or晦涩的代码:
C++:
template<unsigned n> struct factorial {
static const unsigned value = n * factorial < n-1 > ::value;
};

template<> struct factorial<0> {
static const unsigned value = 1;
};

int main() {
std::cout << factorial<6>::value << "\n";
return 0;
}

perl:
#!/usr/bin/perl

APPEAL:

listen (please, please);

open yourself, wide;
join (you, me),
connect (us,together),

tell me.

do something if distressed;

@dawn, dance;
@evening, sing;
read (books,$poems,stories) until peaceful;
study if able;

write me if-you-please;

sort your feelings, reset goals, seek (friends, family, anyone);

do*not*die (like this)
if sin abounds;

keys (hidden), open (locks, doors), tell secrets;
do not, I-beg-you, close them, yet.

accept (yourself, changes),
bind (grief, despair);

require truth, goodness if-you-will, each moment;

select (always), length(of-days)

# listen (a perl poem)
# Sharon Hopkins
# rev. June 19, 1995
ray58750034
2011-03-20 02:57:09 +08:00
思想是自己的事情; 重构和设计是团队的事情。
如果只是编程思想,那就是自己对写代码的积累和认识, 我觉得只要是从学习阶段转为了创造阶段的程序员都是有思想的,只不过有的人想的更深一点而已。

你朋友和 @obiwong 说的对,千万不要局限在语言本身。 就我个人感受而言,最重要的还是需求理解,然后是解决问题的手段,最后才是实现技巧。 而语言只是实现技巧的细节。
morganjaw
2011-03-20 08:02:46 +08:00
将个性融入代码,将技术变为艺术,其他只是一些技巧而已
elfkid
2011-04-02 13:09:47 +08:00
我觉得还是要往底层挖掘..深入到机器语言,然后再深入到硬件层,要是有物理基础可以深入到微观粒子层(当然这个可以只限于思想实验)。最后再一步步递归上来形成的一样类似代码的东西一定很有趣。
yiyang
2011-04-02 13:18:17 +08:00
@morganjaw 其实这些都不重要关键是 好用,能改变世界,能赚钱 这才是最终目的。
Kid
2011-04-02 13:49:14 +08:00
道可道,非常道。編程思想若能寫下來,自然也就成書了。

至於怎麼獲得這項“技能”,@elfkid 的觀點很有趣,我也強烈建議能夠從上到下的瞭解一下基本原理,下到布爾邏輯和門電路應該就差不多了。
mxfli
2011-04-08 00:18:25 +08:00
踏踏实实写代码吧。思想在代码和语言之中,又在语言和代码之外。反者,道之动,弱者,道之用。
dbfox
2011-04-17 16:42:12 +08:00
呃,我写代码 2 年了,也不知道啥是 面向对象,比如写javascript
我总是喜欢 用 function $(_id){ return document.getElementById(_id)}
但是有时候会和 其他的 js 框架 冲突,如 和prototype 冲突
这个时候,我就只有 使用 $G 来标识,很烦
soulhacker
2011-04-17 17:54:04 +08:00
思想比较难说,一般提的较多的是编程范式(paradiagm),也有叫范型或者模式的,比如:imperative、functional、dynamic、meta-programming、declarative、parallelism 等等,每种 paradigm 都是针对某些问题的一种思考和经验汇集,作为编程者需要不断实践,并且在实践中去了解和熟悉这些 paradigm(当然未必需要全都了解)。我觉得这是最接近“编程思想”这个词儿的东西。
kayue
2011-04-18 04:10:32 +08:00
@dbfox front end(web ui) 比较少需要面向对像,一般都是事件导向。

所以光写fornt end 进步有限 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/8170

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX