版里有做软件的么,进来聊聊

来源:百度文库 编辑:超级军网 时间:2024/04/28 22:38:56
本菜上学的时候学的是机械,毕业后做的事系统集成(给单位提供服务器,交换机,路由等解决方案的),弄了三年,觉得没啥意思,后来自己自学了.net,现在算来,从事程序设计已经有个五六年了。

最近感觉进入了个怪圈,经常有的时候,开发中遇到什么难题了,然后解决过程中又发现了别的未知(和项目无关)的,然后又去研究这个未知的。有时候甚至纠结于究竟string s=""还是string s=null。有时候担心这样那样的bug,总担心没有考虑周到。我总结是好奇心和强迫症。越研究越害怕,然后感觉自己好像突然什么都不会了,感觉像个白痴。

大家说说,我是不是有神经病了?本菜上学的时候学的是机械,毕业后做的事系统集成(给单位提供服务器,交换机,路由等解决方案的),弄了三年,觉得没啥意思,后来自己自学了.net,现在算来,从事程序设计已经有个五六年了。

最近感觉进入了个怪圈,经常有的时候,开发中遇到什么难题了,然后解决过程中又发现了别的未知(和项目无关)的,然后又去研究这个未知的。有时候甚至纠结于究竟string s=""还是string s=null。有时候担心这样那样的bug,总担心没有考虑周到。我总结是好奇心和强迫症。越研究越害怕,然后感觉自己好像突然什么都不会了,感觉像个白痴。

大家说说,我是不是有神经病了?
研究是好的,但多研究就没必要了。
不过像string初始值是“”还是null,还是应该搞明白的。
壮东风 发表于 2012-4-20 14:46
研究是好的,但多研究就没必要了。
不过像string初始值是“”还是null,还是应该搞明白的。

哈哈,这个明白的,我的意思是,纠结于用哪一种,如果是"",那么就已经初始化了,如果不用就浪费堆栈了,如果是null的话,那么使用的话就要浪费初始化时间。哈哈,我可能神经病了
找老婆 发表于 2012-4-20 15:00
哈哈,这个明白的,我的意思是,纠结于用哪一种,如果是"",那么就已经初始化了,如果不用就浪费堆栈了 ...
当然这种问题在.net或java里是不存在的,不new的话就是一个栈上的指针而已,一定是null。
学机械的干嘛不玩往 自动化控制,plc这方面走呢
编程技术现在确实到了一个瓶颈。怎么改都那一套。所以现在又开始函数编程之类的尝试,不过我倒是觉得labview之类的才是方向。总之就是让高科技白菜化,让高技术小白化。
string s=string.Empty;{:soso_e128:}
函数编程?求指教
代码自动生成是趋势 业务和架构才是关键...
十月赞歌 发表于 2012-4-20 16:23
函数编程?求指教
haskell之类的
bigwise 发表于 2012-4-20 16:23
代码自动生成是趋势 业务和架构才是关键...
所以现在中间语言很火啊
bigwise 发表于 2012-4-20 16:23
代码自动生成是趋势 业务和架构才是关键...
赞同你的观点,架构,设计模式掌握了,玩啥语言其实都一样
不是做软件的,但是我觉得好奇心是优点,没必要太纠结

关于字符串初始化,我的理解是
1.既然选了.NET, 就没必要考虑这点效率问题了。
2.初始化不太可能成为热点,所以没必要费心优化。
咱也是学机械出身,现在专业软件。
主业是C++,楼主所顾虑的问题在C++中完全不存在,“”和NULL压根就是俩东西。
BUG是无所不在的,稍微复杂点的东西,总有考虑不到的边界条件,不过多用异常和错误检测,将未知的错误保持在可控的范围。
兼职程序员认为,BUG这个东东不应该考虑太多的
我同意LS意见,应该多用异常检测和错误处理来减少,然后用无尽的版本升级来补救吧,用户也许还会觉得你有责任心。。。。。
已做程序十几年
经常下楼梯后想回去看看门是否锁上,是否算强迫症
yxtk 发表于 2012-4-20 20:06
已做程序十几年
经常下楼梯后想回去看看门是否锁上,是否算强迫症
同感,我也有此状况
LZ及一干有类似表现的CDer都是聪明人,所以才会得这种“聪明病”。
“巧者劳而智者忧,无能者无所求”,因为非常聪明,所以也就特别容易多疑,再加上完美主义倾向,就会患上这种“自我强迫症”。
加强身体锻炼,使生活规律化,保持旺盛的精力和体力,放慢做事的节奏,可以多想,但要慢做,自我调节,治于未病
代码自动生成是趋势 业务和架构才是关键...
==========
这种梦话业内念叨了没30年也有20年

从流程图时代一直念叨到UML时代

乃们见过任何一个项目是代码自动生成做出来的不?
程序员没有不神经质的。我也一样
yxtk 发表于 2012-4-20 20:06
已做程序十几年
经常下楼梯后想回去看看门是否锁上,是否算强迫症
居然找到个和我有一样毛病的
LZ的想法是对的,开发软件的过程就是一个不断权衡取舍的过程
l楼主想太多了,软件就一个要求,简单易懂,别去专研那些技巧,现在想起那些给人出的面试题,什么i++,++i 有什么不同,丢死了
研究是好的,但多研究就没必要了。
不过像string初始值是“”还是null,还是应该搞明白的。
不同的编译器处理不一样,同样的初始化得到的结果很可能不一样,所以不要让机器给你默认值,变量使用前一定要自己赋值,简单可靠。
gingkoes 发表于 2012-4-29 17:55
不同的编译器处理不一样,同样的初始化得到的结果很可能不一样,所以不要让机器给你默认值,变量使用前一 ...
就楼主提到的情况,编译器是根据C#规范做的,所以结果是唯一的。
string s跟string s=null是等价的,都分配一个对象指针,指向为null。
string s=""和string s=new string("")等价。
基于虚拟机的语言跟C/C++是完全不同的。
int A = 0 与 int A = new int() 是不是等价?
yxtk 发表于 2012-4-20 20:06
已做程序十几年
经常下楼梯后想回去看看门是否锁上,是否算强迫症
+1
经常会这样
就楼主提到的情况,编译器是根据C#规范做的,所以结果是唯一的。
string s跟string s=null是等价的,都分 ...
受教,对C#不了解,但无论如何,在变量使用前确保其被初始化应该是正确的行为。
gingkoes 发表于 2012-4-29 21:28
受教,对C#不了解,但无论如何,在变量使用前确保其被初始化应该是正确的行为。
总的原则是没错的,但也应看到C++之后的新语言,如Java、C#等,为简化开发、减少出错,对某些行为如变量初值等,作了明确、唯一的规定,所以某些C/C++开发中养成的习惯没有必要延续下来了。
如果你很执着于技术实现的细节,就会很纠结。这是个人做事的风格,本无所谓好坏,自己把握一个度就行了。

稍微解释一下 "" 和null的问题。""在编译器前端看来是一个空字符串,它不包含任何用户定义的字符,但是编译器会加入一个'\0', 它的asicc编码值就是0,这就是null的宏定义。故两种写法至少在常用的vc和gcc中是一致。string s = null中,=是操作符重载。我猜测是先用string类的构造函数以null为实参构造出一个string对象,然后赋给s,但具体的实现方式各种函数库也许不同。

如果你很在乎这些底层的实现细节,就看看编译技术方面的材料吧。如果不需那么深入,有一本C++ Object Model,包含很多编程语言实现细节的内容。

.net是微软做的一套运行时环境,以及与该环境配套的开发工具。它可以被认为类似于虚拟机,运行托管的代码,与java有点像。这是比之C/C++更加high-level(指抽象层次,中文翻译为“高级”难免让人误解)的东西。你提到的function programming,在学术界很火,有快二十年了吧。但在我接触的范围内、在工业界的应用范围不算广。这是个很有意思的,更加high-level的东西。declarative languages在模式识别和人工智能有实质进展后,应该会有广泛的应用,但现在还看不到苗头,尽管在狭窄的、特定的领域里,这种做法取得了不少成功。

我的意见是,如果你是坐面向应用的开发,就不要拘泥于小细节,软件的功能、行为才是真正的关注点。若你是一个系统软件(如操作系统、编译器等)的维护人员(看上去不像...)那么稍微补充些编译技术,尤其是与高级语言直接相关的编译前端技术。

总之术业有专攻,现在IT技术领域细分很厉害,一个人不可能什么都会的,关注好你所在的产业链层次内的东西,往相邻的层次略有涉猎,就已经很不错了。


早先NULL的定义是

   #define NULL (char*)0

早先NULL的定义是

   #define NULL (char*)0
壮东风 发表于 2012-4-29 18:31
就楼主提到的情况,编译器是根据C#规范做的,所以结果是唯一的。
string s跟string s=null是等价的,都分 ...
string s  和string s = NULL
两者是栈变量,初始为空字符,没有分配指针。。。
deepinpo 发表于 2012-5-1 14:55
string s  和string s = NULL
两者是栈变量,初始为空字符,没有分配指针。。。
这里说的是C#啊,理解成java也行,并非C++。
注意楼主说的。
LZ大学的编程语言老师肯定会被LZ给愁死的
程序,架构很重要,细节其实只要不是拖慢运行效率或者把程序弄崩溃,并不需要太纠结吧


像前面说的那样,多用错误检测,先考虑出错时怎样处理就能避免程序崩溃。
我在备考系统架构师,有空多交流。

像前面说的那样,多用错误检测,先考虑出错时怎样处理就能避免程序崩溃。
我在备考系统架构师,有空多交流。