我建议你:
1. 把 google protocol buffers 看懂,包括parser和生成的代码,并且把数据格式弄懂。
2. google protocol buffers 有一个RPC的骨架,但是没有提供实现,你可以给libevent做一层C++封装,把
google rpc实现出来。
3. 利用这套rpc,可以写些client/server程序,比如可以从多人在线聊天做起,命令行的就行。
我当年跟LZ一样,<<C++ Primer>>看了好久.到最后,发现我需要,仅仅是STL,简单的类封装罢了.
个人认为,如果能把<<Effective C++>>中的item都整明白,应付大陆大部分公司的C++工作问题是不成问题的.如果把那些问题都整明白了,对C++的理解也会上一个档次,即使有不会的问题,也可以自己通过看书,搜索解决了.
C++给的很多,最后发现,其实我只是需要这么一点罢了.
2009/9/22 Chunyuan Ge <hhy...@gmail.com>比较认同 中级的:Effective C++, More Effective C++, Effective STL;
和那本比较 比较实用的:
The C++ Standard Library
其实真的很深入的inside C++ object model读来也没有什么意思, 甚至有可能让你走火入魔陷入语言特性的细节不能自拔
然后是多读代码,特别是优秀的开源代码。学习那些优秀项目的优秀品味和思想。
你想深入学习C++我理解为是为了将来更好的做软件,而不是为了开发新的编程语言。因此没必要陷入太多的晦涩语法里面去。
2009/9/28 Pink.Bear <mr.be...@gmail.com>:
从我个人经历看,我待过的公司其实都对Unix的技术要求更高。现在这家对OS
X和Windows的要求一半一半吧。不过我自己还是喜欢花时间在OS X上。工作时间用来学一些Windows也能完成工作。
我不是建议大家不学那些公司需要的知识,那样连工作都不能完成。但是用自己的时间学习的时候,还是花在一些自己有兴趣又有前途的系统上。(另外不用争OS
X,Linux和Windows的前途——虽然我自己兴趣在OS
X,我这篇的重点在QT,GTK和MFC。前两者也都有Windows的port。其实MFC在界面开发上没有什么优势,很多细致的user
experience还是得直接调Win API——这点用QT也能做到。)
2009/9/28 sagasw <sag...@gmail.com>:
微软的技术有历史意义,但是从设计角度说水平很差。以前,微软的优势在于PC需要这样quick and
dirty的方案。如今PC的硬件水平已经和以前的小型机相当了,微软的技术风格的问题就越来越明显。
微软曾经把自己的native GUI放置了三年没有改进,整天鼓吹.NET。弄得ISV们在Windows上无所适从。说它不论技术水平还是技术策略都很混乱不算很主观。微软的牛人也不少,刚有一个Linux的大牛干不下去走人了。还有一个把员工的iPhone拿来戏弄一番的牛人。我是觉得比牛人没什么意义。
至于说MFC和QT的商业开发费用。我只想说你我都不是开公司的(也许你是,那我的话题不针对你的特例)。公司用MFC,你就学MFC(也可以用一些业余时间),这我从来没反对过。但是如果你是凭兴趣学习一些知识,我不建议MFC。个人认为不要觉得MFC免费你以后工作中遇到的MFC开发的几率就一定大,我个人的经历并非如此。
2009/9/29 sagasw <sag...@gmail.com>:
On 9/23/09, Little Push <littl...@gmail.com> wrote:
> 强烈推荐楼主点开始->运行,输入mspaint然后照着那个东西做一个一模一样的出来,基本上可以算入门了。
--
Sent from my mobile device
笑骂由人,洒脱自如!
心若冰清,天塌不惊!
http://www.iron-feet.cn
On 9月29日, 下午4时34分, Dong Feng <middle.fengd...@gmail.com> wrote:
> 看到别人批评微软就把别人叫『愤青』并不能体现你的实用主义。
>
> 微软的技术有历史意义,但是从设计角度说水平很差。以前,微软的优势在于PC需要这样quick and
> dirty的方案。如今PC的硬件水平已经和以前的小型机相当了,微软的技术风格的问题就越来越明显。
>
> 微软曾经把自己的native GUI放置了三年没有改进,整天鼓吹.NET。弄得ISV们在Windows上无所适从。说它不论技术水平还是技术策略都很混乱不算很主观。微软的牛人也不少,刚有一个Linux的大牛干不下去走人了。还有一个把员工的iPhone拿来戏弄一番的牛人。我是觉得比牛人没什么意义。
>
> 至于说MFC和QT的商业开发费用。我只想说你我都不是开公司的(也许你是,那我的话题不针对你的特例)。公司用MFC,你就学MFC(也可以用一些业余时间),这我从来没反对过。但是如果你是凭兴趣学习一些知识,我不建议MFC。个人认为不要觉得MFC免费你以后工作中遇到的MFC开发的几率就一定大,我个人的经历并非如此。
>
微软的技术从设计角度来说很差,差在哪里?
举些例子出来?
我先举一个就mfc来说,不能说是最烂的gui框架,也好不到哪去,
首先来说RTT的实现都是靠宏来实现的,还有消息分发,实现的都不怎么好。
整个mfc的代码比较难懂,光一堆宏就把你搞得云里雾里的。
但就是这么烂的框架,相信这里也没人能保证写一个比他好一点的。
On 9月23日, 下午4时36分, hu <TearOff...@126.com> wrote:
> 公司流行什么就学什么。
> 别的多想也没什么用。
>
呵呵,我们学技术的真正目的是赚钱,养家糊口,当然什么赚钱学什么。
你不要轻视了微软的技术实力,好歹也是钱堆出来的。
我认为MFC的CMapStringToPtr比std::map更好。
我并没有轻视微软的技术实力,相反我是比较尊重的。
就是看到经常有人说微软的技术设计水平差,很想知道一下,到底微软有哪些技术上设计水平差的产品。
也无意说的这么偏激。
这种想法并不是如你认为的那么理性。如果每个人都明白什么赚钱,银行利率早就是负的了。最好看看Steve
Jobs在Stanford大学毕业仪式上的讲话。选择学习什么,遵从自己的兴趣反而成就会更大。
我不要求你能对QT和GTK有多了解才能发表观点。但是如果你连这两个库都不了解,就请发表一些贴切的观点,别妄自揣测别人的心理和思维过程。讨论要针对对方的逻辑和事例,而不是胡猜字面上根本看不出来的背景。
2009/10/2 sagasw <sag...@gmail.com>:
string没有什么了不起。我待过几个公司用过几个不同的string实现,无非就是查找,拼接,encoding转换而已。一个星期就能自己实现一套。string实现的好不好对于一个中级语言的库来说也就和一辆车的饮料托精致与否一样。(前面有人说批评C++的是在学Linus,下面我就第一次提一下Linus相关的话题。)如果真的发现性能重要,还是必须像Git那样用C的char*操作才能获得deterministic的性能。
2009/10/2 Eric.Wang <wangsh...@gmail.com>:
微软的技术劣势是相对的,不是绝对的;是现实的劣势,不是说它的技术没有任何历史贡献或者意义。
我不否认,十年前,微软的技术让我能充分使用一台PC,给我带来了很大便利。但是这不意味着,今天当我在Mac上用20分钟就能编译完的工程在Windows上要2个小时,或者我在UNIX上用一个脚本轻松搞定的东西在Windows要折腾好几步鼠标操作,我还必须假装对Windows的技术多么尊重。
2009/10/2 cnhenuake <cnhe...@gmail.com>:
既然起了个头,我就详细聊聊 Windows 的窗口管理。
Windows 的 Window Manager 是 toolkit-aware 的。也就是说,Windows 里很多 control
本身就是一个 window。Window Manager 要分出一些资源来管理这些
control。这样做有很多害处。第一是严重违背了模块之间的 least knowledge 原则;第二是 Windows 的 WM
很大程度还是内核态的,所以这些窗口乃至于 control 的句柄和很多资源都是 system-wide
的。严重的干扰了进程之间的隔离。而且,Windows 依然没有改进对这些 GDI 对象的内存管理。创建大量的 GDI
对象,即使有很多内存可用,也会因为用光 Windows 的一个大小受限的 GDI heap 而导致程序失败。而其它主流的 WM,比如
Gnome(通过GTK),KDE(通过QT)和 Mac OS X (通过 Quartz)都是 toolkit-unaware 的。WM
只处理窗口的状态,对于程序和系统的稳定性以及用户体验都有优势。
GDI 是为了比较低速的 UI 设计的。所以在处理高速应用,比如视频,3D 的时候,Windows 必须采用很多 ad-hoc 的手段。而
toolkit-unaware 的 WM 因为和 toolkit 的交互通过像素进行,所以对所有图像来源一视同仁。这在简化开发和提高 UI
一致性方面有很大帮助。比如 OS X 里的窗口最小化效果,绝对不会因为 content 是静态图片或者视频而有什么区别。而 Windows
下我们经常看到视频和 3D 窗口在这方面的奇怪效果。
Windows 直到 Vista 才开始部分使用显卡的硬件加速来处理窗口。而 OS X 在 XP 之前就开始使用 OpenGL
来处理窗口。而且还支持半透明窗口。到 Windows 7 似乎 Windows 在这方面有所赶上,但是细致程度和稳定性都还有待考验。
另外的小问题还有:
1. 为什么 modal dialog box 弹出之后 parent window 不能 move?如果弹出两层 modal dialog
box,基本上要看 main window 的信息就只能 close 一个 dialog box 重来了。
2. 弹出一个 topmost dialog box 就会 steal focus。如果你刚好输入完一个 text field 准备
enter,你很可能连那个 dialog box 说的什么都没看清就稀里糊涂的 accept 了。
3. 如果你正在拼音输入法里选词, focus is stolen。那么恭喜你,你的 text field 里基本上是一堆垃圾,重新输入吧。
4. 在 Vista 之前,只要你的 Windows app 的消息分发线程被 block,那么你的窗口被覆盖之后就是一个鬼脸。直到
Vista 才开始支持 buffered window。
这些问题 OS X 里都没有。
On 10/3/09, Tinyfool <tiny...@gmail.com> wrote:
> MFC不是生命力顽强,而是因为后继乏嗣,别跟我说.net <http://xn--mcr800beu5acvb.net>
> 是MFC的后继,现在还继续用MFC的人当然不这么看,这么看的话,他就用.net <http://xn--8mq883a2pt.net>去了。
>
> Windows XP的例子也很类似,如果vista不持续的跳票,发布后对配置要求那么高,XP哪里来的那么久的生命力?
>
> 2009/10/3 sagasw <sag...@gmail.com>
>
>> 如果你在那些大公司呆过(比如IBM),你就会知道有些决定并不是那么简单作出的。
>> 也许程序员也是一边抱怨谁做的这种烂设计,或者是谁写的这些烂代码,一边还是要完成那些烂的设计以及维护那些烂的代码。
>>
>> 也许有的小兵很优秀,但是领导太差劲,那一定不会有什么好的结果。可以看看很多好莱坞的电影都会去塑造那种烂领导搞砸场面,悲情小兵无奈奋斗的狗血场面。(我举一个例子,黑鹰坠落)
>>
>>
>> 另外,当时很多设计都是依赖当时的情境,比如c++标准就是这些,没有那些,那你是程序员能怎么做呢?等着标准出来再写代码,还是通过宏来完成几乎不可能的任务?
>>
>> 我不觉得这是烂,只是微软没有想到MFC的生命力这么顽强。盖茨很早以前也曾经说过,1M的内存足够了(这个典故我有些急不太清楚,大致如此),但是后来的发展大家都知道了,微软也多次想结束windows
>> xp的生命,但是也没有想到,windows xp这个爷爷的生命力甚至超过了windows vista
>> 这个爸爸,弄不好会跟windows7差不多呢,世事无常,就表现在这些事情上吧。
>>
>>
>> 2009/10/2 cnhenuake <cnhe...@gmail.com>
>>
>>
>>>
>>> On 10月2日, 下午2时16分, "Eric.Wang" <wangshaoq...@gmail.com> wrote:
>>> > 我认为MFC的CMapStringToPtr比std::map更好。而且我认为CString虽然烂,但是也比std::string更好。
>>> > 而且你说微软的消息分发做的不好,这缺乏依据。因为windows是迄今最成功的桌面操作系统,而windows就是基于你所说的“实现的不怎么好”的
>>> > 消息分发机制。
>>> >
>>> > 你不要轻视了微软的技术实力,好歹也是钱堆出来的。
>>> >
>>> > On 10月1日, 下午7时46分, cnhenuake <cnhenu...@gmail.com> wrote:
>>> >
>>> > > On 9月29日, 下午4时34分, Dong Feng <middle.fengd...@gmail.com> wrote:>
>>> 看到别人批评微软就把别人叫『愤青』并不能体现你的实用主义。
>>> >
>>> > > > 微软的技术有历史意义,但是从设计角度说水平很差。以前,微软的优势在于PC需要这样quick and
>>> > > > dirty的方案。如今PC的硬件水平已经和以前的小型机相当了,微软的技术风格的问题就越来越明显。
>>> >
>>> > > > 微软曾经把自己的native
>>> > > > GUI放置了三年没有改进,整天鼓吹.NET<http://%E6%95%B4%E5%A4%A9%E9%BC%93%E5%90%B9.net/>
>>> 。弄得ISV们在Windows上无所适从。说它不论技术水平还是技术策略都很混乱不算很主观。微软的牛人也不少,刚有一个Linux的大牛干不下去走人了。还有一个把员工的iPhone拿来戏弄一番的牛人。我是觉得比牛人没什么意义。
>>> >
>>> > > >
>>> 至于说MFC和QT的商业开发费用。我只想说你我都不是开公司的(也许你是,那我的话题不针对你的特例)。公司用MFC,你就学MFC(也可以用一些业余时间),这我从来没反对过。但是如果你是凭兴趣学习一些知识,我不建议MFC。个人认为不要觉得MFC免费你以后工作中遇到的MFC开发的几率就一定大,我个人的经历并非如此。
>>> >
>>> > > 微软的技术从设计角度来说很差,差在哪里?
>>> > > 举些例子出来?
>>> > > 我先举一个就mfc来说,不能说是最烂的gui框架,也好不到哪去,
>>> > > 首先来说RTT的实现都是靠宏来实现的,还有消息分发,实现的都不怎么好。
>>> > > 整个mfc的代码比较难懂,光一堆宏就把你搞得云里雾里的。
>>> > > 但就是这么烂的框架,相信这里也没人能保证写一个比他好一点的。
>>> 我并没有轻视微软的技术实力,相反我是比较尊重的。
>>> 就是看到经常有人说微软的技术设计水平差,很想知道一下,到底微软有哪些技术上设计水平差的产品。
>>> 也无意说的这么偏激。
>>
>>
>>
>
>
> --
> Tinyfool的开发日记 http://www.tinydust.net/dev/
> myTwitter: http://twitter.com/tinyfool
>
--
2009/10/3 sagasw <sag...@gmail.com>:
说的好,这就叫进步。微软曾经领先,然后PC业(包括Linux,BSD和Mac的广义定义)进步了,微软落后了。
Windows下的命令行,算了吧。配上Cygwin才能勉强对付。
2009/10/3 Jeffrey Zhao <je...@live.com>:
2009/10/3 Bill Wung <iron.feet...@gmail.com>:
> 悲剧,该话题在某种程度上又变成了毫无意义的关于windows好和Linux好的论战了~
>
至于你后来说MFC之类的,看上去有凭有据的,我不懂所以也不出声了。
Windows自带的命令行是大大不够,但是可以补充cygwin,还能用powershell。
所以我说了,Windows给了你自由让你选择好用的东西。
如果你放弃了自由,那么用不好的话就不要怪别人了。
--------------------------------------------------
From: "Dong Feng" <middle....@gmail.com>
Sent: Saturday, October 03, 2009 3:03 PM
To: <pon...@googlegroups.com>
在Windows下不用命令行不是放弃了自由,是选择不自寻烦恼。在UNIX下花10分钟的代价在Windows上要花一个小时,这样的自由对我太奢侈。
2009/10/4 Jeffrey Zhao <je...@live.com>:
我现在想研究下Tor的设计和源码,为何用的人越多会越慢(据说)?
解决了出口的问题,Big Brother会不会组织0.499元er下载东西摧毁之?
///////////////////// 以下胰岛素分泌偏高者和未成年人慎
入 ///////////////////////////////////
现在怎么跳?
第一,批评微软=愤青,说说Mac=自以为高雅。我希望这样没有水准的逻辑不要出现在TopLanguage上。讨论要基于对方的逻辑和事例,不要按照自己的成见贴标签。如此只能在自己的脑门上显现这些标签。
第二,你说不要『忽略了市场的选择』,这方面我结合netapplication的数据早有论述。我不希望重复。
第三,如果你希望用价格便宜补偿易用性的缺失,这是合理的。但是恰恰说明了价格贵而仍然被市场接受的东西是物有所值的,也就是说人们的投资在易用性方面得到了回报。
第四,Mac的易用性能客观的提高效率。这和主观的喜欢与否不完全是一回事。固然提高效率要看个人的具体情况,但是这不是那种用一句『我就喜欢』就堵人嘴的讨论方法的地方。
第五,感觉别人的言论似是而非要拿出自己的道理。否则要自己好好反思。
第六,Mac是我举的一个方面的例子。我一贯的是说说UNIX。恰好Apple也同意UNIX的先进性。
2009/10/4 sagasw <sag...@gmail.com>:
> 不要以为说说mac就能体现什么优雅高级.
>
> mac的高级是缘于它的显示硬件只需要支持很少几种而已.带来的缺陷也很明显,贵.
>
> 说的这个那个的,你可以说它高级,可也不要忽略了市场的选择.感觉你说的一些东西似是而非的,也没必要跟你做这些争论,喜欢不喜欢都是自己的事.
>
我回的那贴里我没看到你举任何关键例子,所以我说你说的话不够客观。
至于你后来说MFC之类的,看上去有凭有据的,我不懂所以也不出声了。
Windows自带的命令行是大大不够,但是可以补充cygwin,还能用powershell。
所以我说了,Windows给了你自由让你选择好用的东西。
如果你放弃了自由,那么用不好的话就不要怪别人了。
本来就是如此,能够通过轻易补充工具得到高度生产力就是一样,你在Unix下工作不补充任何东西么?
照你的看法,Windows下程序员都不要活了,生产力都是Unix程序员的几分之一。
关键就在于,Windows下程序员自有一套提高生产力的做法,你只是选择了不去接受而已。
--------------------------------------------------
From: "Dong Feng" <middle....@gmail.com>
Sent: Sunday, October 04, 2009 4:03 PM
人的性质太复杂。『就是不愿意去了解』这种心理活动也不好揣测。这里还是把技术问题讲清楚。如果你认为谁谁不了解什么,你就直接讲清楚。如果对方顾左右而言他,那么大家都能看到这个人『就是不愿意去了解』。不要一上来就推测对方的心理。一个技术论坛应该有细致的逻辑推导和实例陈述,而不是对他方的心理做任意的揣测。
>
> 但是换个角度思考,既然借助外力能实现,那不是更好吗?外力能对我产生作用的前提是我自身先能承受啊,要不然我会崩溃的。
>
> 前几天才写了一篇文章,小机制反应大思想:符号链接和硬链接。当然写此文并不是为了挑起unix/windows的战争,只是文字还是很自然的就流露出了使用Linux的优越感。后来waterownloo留言说windows
> xp之前也可以创建硬链接,理由是windows下有原生的UnixUtils,其行为确实跟预期一致(cygwin只是一个模拟层)。
>
> 这样不是更好吗?这下Unix用户可以更好的在windows下工作了,当然如果有人偏要抱着偏见不放,那也不能说明Unix/Windows这两个平台的问题。
>
Unix用户可以在Windows下通过Cygwin工作是一件好事。但是,如果我们是在做一个细致的比较,我只能说Windows+Cygwin的用户体验仍然不如Unix。不否认Cygwin的benifit并不意味着不能对Windown+Cygwin和Unix做比较。这不是什么偏见。这种意见只是说明有一种更好的用户体验在那里,如果你的情况允许可以尽量考虑更好的而不是good
enough的。
人的性质太复杂。『就是不愿意去了解』这种心理活动也不好揣测。这里还是把技术问题讲清楚。如果你认为谁谁不了解什么,你就直接讲清楚。如果对方顾左右而言他,那么大家都能看到这个人『就是不愿意去了解』。不要一上来就推测对方的心理。一个技术论坛应该有细致的逻辑推导和实例陈述,而不是对他方的心理做任意的揣测。
Unix用户可以在Windows下通过Cygwin工作是一件好事。但是,如果我们是在做一个细致的比较,我只能说Windows+Cygwin的用户体验仍然不如Unix。不否认Cygwin的benifit并不意味着不能对Windown+Cygwin和Unix做比较。这不是什么偏见。这种意见只是说明有一种更好的用户体验在那里,如果你的情况允许可以尽量考虑更好的而不是good enough的。
比如Visual Studio到2008仍然不支持并行编译。20分钟能在Mac
Xcode上build出来的project在Windows上要一个小时(相同的C++代码)。
至于各方面的需求是否得到补充,我的经历是几乎所有的open source工具都可以直接在Mac OS
X上编译,甚至有很多开源的库,比如zlib,OS X缺省就配制了。相反,很多open source
project都缺少Windows的make
file。事实上,人们在Windows上早就养成了什么都用微软的习惯。几个给Windows编写工具的人不是能和整个UNIX社区抗衡的。
2009/10/6 居振梁 <juzhe...@gmail.com>:
有些东西不用是不知道的,从Windows转到Linux再到Mac不是一个单纯情感的决定。
比如Visual Studio到2008仍然不支持并行编译。20分钟能在Mac
Xcode上build出来的project在Windows上要一个小时(相同的C++代码)。
至于各方面的需求是否得到补充,我的经历是几乎所有的open source工具都可以直接在Mac OS
X上编译,甚至有很多开源的库,比如zlib,OS X缺省就配制了。相反,很多open source
project都缺少Windows的make
file。事实上,人们在Windows上早就养成了什么都用微软的习惯。几个给Windows编写工具的人不是能和整个UNIX社区抗衡的。
2009/10/6 居振梁 <juzhe...@gmail.com>:
On Oct 6, 6:06 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 有些东西不用是不知道的,从Windows转到Linux再到Mac不是一个单纯情感的决定。
>
> 比如Visual Studio到2008仍然不支持并行编译。20分钟能在Mac
> Xcode上build出来的project在Windows上要一个小时(相同的C++代码)。
>
> 至于各方面的需求是否得到补充,我的经历是几乎所有的open source工具都可以直接在Mac OS
> X上编译,甚至有很多开源的库,比如zlib,OS X缺省就配制了。相反,很多open source
> project都缺少Windows的make
> file。事实上,人们在Windows上早就养成了什么都用微软的习惯。几个给Windows编写工具的人不是能和整个UNIX社区抗衡的。
>
> 2009/10/6 居振梁 <juzhenli...@gmail.com>:
>
> > 2009/10/5 Dong Feng <middle.fengd...@gmail.com>
我看到的可不是这样,我们公司的大牛们在maillist上讨论的结果也不是这样。不知道是不是同一个VS2008。
2009/10/6 missdeer <miss...@gmail.com>:
2009/10/6 Dong Feng <middle....@gmail.com>:
你工作在一个Unix环境下,需要接触的都是Unix项目,Mac就是Unix,自然容易构建。
既然你的工作内容就是Unix环境,这自然没有任何理由让你去用Windows然后再Adaptor一下,生产力自然不高。
如果你接触的大都是Java项目,能够轻易跨平台呢?
我认为,或者说我想讨论的都只是“生产力”这个普遍的,普适的话题,而不是在“特定项目性质”下的讨论。
否则,举个简单的例子,如果你接触的都是Windows项目,你会觉得Mac方便吗?
至于给Windows编写工具的“几个人”和“Unix社区”抗衡不抗衡,我不知道Windows程序员和Unix程序员的数量谁多。
即便是Unix数量多吧,100万对10万,但是就开发环境的质量来说,我还真不觉得10万个人搭出的开发环境会比100万的差。
因为,这是100万对10万,不是100人对10人,我想你应该明白我的意思。
--------------------------------------------------
From: "Dong Feng" <middle....@gmail.com>
Sent: Tuesday, October 06, 2009 6:06 PM
To: <pon...@googlegroups.com>
Subject: [TL] Re: {非技术}如何深入学习C++?
> 有些东西不用是不知道的,从Windows转到Linux再到Mac不是一个单纯情感的决定。
你工作在一个Unix环境下,需要接触的都是Unix项目,Mac就是Unix,自然容易构建。
既然你的工作内容就是Unix环境,这自然没有任何理由让你去用Windows然后再Adaptor一下,生产力自然不高。
如果你接触的大都是Java项目,能够轻易跨平台呢?
我认为,或者说我想讨论的都只是“生产力”这个普遍的,普适的话题,而不是在“特定项目性质”下的讨论。
否则,举个简单的例子,如果你接触的都是Windows项目,你会觉得Mac方便吗?
至于给Windows编写工具的“几个人”和“Unix社区”抗衡不抗衡,我不知道Windows程序员和Unix程序员的数量谁多。
即便是Unix数量多吧,100万对10万,但是就开发环境的质量来说,我还真不觉得10万个人搭出的开发环境会比100万的差。
因为,这是100万对10万,不是100人对10人,我想你应该明白我的意思。
--------------------------------------------------
From: "Dong Feng" <middle....@gmail.com>
Sent: Tuesday, October 06, 2009 6:06 PM
To: <pon...@googlegroups.com>
Subject: [TL] Re: {非技术}如何深入学习C++?
> 有些东西不用是不知道的,从Windows转到Linux再到Mac不是一个单纯情感的决定。
其实有了Powershell之后,大部分的系统管理工作,开发辅助工作都已经足够了。
当然,完全覆盖unix shell,我不敢这么说。
不过对于那些奇怪的,需要反复执行的任务,那就自己额外写个脚本,甚至写个cmdlet。
Windows下程序员千千万,Windows下的应用程序万万千,
如果你觉得哪个工作不好用,别人也会遇到,在那么长的时间里基本上都有人已经搞定了。
Windows程序员不都是傻瓜,Windows也不是一群白痴做的,
用10年前的观点看现在Windows,有问题的就是我们自己了。
--------------------------------------------------
From: "wang feng" <wanng...@gmail.com>
Sent: Tuesday, October 06, 2009 6:07 PM
To: <pon...@googlegroups.com>
Subject: [TL] Re: {非技术}如何深入学习C++?
>
2009/10/6 Jeffrey Zhao <je...@live.com>:
这种间接论证真的很有意思。
>
> 用10年前的观点看现在Windows,有问题的就是我们自己了。
>
10年前的Windows相对当时的情况还不错。今天还不如当初呢。
有意思。至少不是原来提及的默认配制。也许我该试着把它加上,不过也许不作为默认配制是有原因的,天知道。
除去并行编译,Windows的开发还有其它方面的问题,而这些问题都是Mac没有的,Linux和大部分Unix也没有大多数问题:
1. API方面,不采用UTF-8,而是采用wchar。结果所有的API都要加一个_w前缀或者w后缀。一开始用wchar是因为UTF-16定长好处理,结果UTF-32出了之后,UTF-16也变成了变长编码。结果既失去了UTF-8对ASCII和char*的兼容,也没得到定长编码的简便性。两头不落。
2. 糟糕的go to definition实现。VC下go to
definition这个操作一旦文件或者sub-project数量较多就会经常失败。明明能编译通过,凭什么就找不到definition呢?没有比较不知道,Xcode下是100%可以成功的。
3. 对路径的限制。Windows的路径还是那个短短的256的限制。更好的是,放到VC里的project经常因为这个问题出一些很有创造力的错误提示。
4. 如果你的代码call stack里面有系统的函数,那么必须到symbol
server上下载symbol才能得到正确的函数名。否则从第一个系统函数往下所有的call stack都是错误的。
对程序员友好最终会反映为对用户友好。正如Neal Stephenson在《In The Beginning It Was Command
Line》里面说的,任何GUI都是一种metaphor,metaphor本身就是一种含糊的东西,如果它所依赖的根基还是一种不清晰的结构,最终总会遇到难以弥补的问题。
UNIX在这个问题上错过了一些时间,也就是上面说的『最终会反映为』的『最终』来的稍有点迟。对此我一贯说对Windows能填补空白的功绩是不可否认的。但是那不意味着发展到今天两种文化没有优劣之分了。
Mac OS X融合了classic
Mac和Unix文化。说Mac融合了Windows和Unix文化有点牵强。因为Windows其实是Mac的一个廉价的clone而已。当然Windows比classic
Mac成功,但是说道融合文化,把Windows说成是Mac融合的一部分就有点不分先后了。毕竟classic
Mac是先出现,而且Apple肯定是更加容易借鉴自家的技术。而且这种融合,是以UNIX为底层基础的。也就是说不是没有主次之分的。
In linux-2.6.11/include/linux/limits.h:
file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
你的信息也并不完全。Windows下没有symbol的call
stack显示是错误,而不是仅仅没有名字。这一点可以肯定——我每天都见到因为没有symbol而显示的完全错误的call stack。
>
> 其他的不想去一一辩驳了,我以前说过,你这些论点都是些似是而非的。
>
> 喜欢mac那ok,我也喜欢mac系统,我还有个ibook g4呢,但是把mac上的一切吹到天,就有些过了。
>
>
我还是那句话,我没有把Mac捧上天,也没有把Windows踩下地,但是这二者,或者换个角度,从UNIX和Windows这二者来看,是有优劣之分的。
fopen() 每个OS都有吧?在大多数UNIX上都是支持UTF-8的。在Windows上你自己去查吧。
>
> 第二条,能不能也拿出你的论据呢?比如说xcode支持无限的goto,vc2008不支持之类的。
>
我不懂你要什么证据。同样的code base在VS种go to
def就失败,在Xcode里就成功,这不是证据吗?奇怪,我原文不是这么写的吗?如此说来你的下一句倒是似是而非了。
>
> 还是那句话,说话要有论据,不能光用一些似是而非的自定义结论来证明你的看法。
>
很简单,没人强迫我的时候我确实不用,我用的时候都是不得已而为之。没有抱怨的意思,只是就二者的优劣评价,供其它想听的人参考。
还是那个意思,你不想听可以不听,觉得我说的不对可以纠正,没必要揣测别人每天的生活如何。
On Oct 7, 12:08 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 2009/10/7 sagasw <sag...@gmail.com>:
>
>
>
> > 第三条
>
> > In linux-2.6.11/include/linux/limits.h:
>
> > #define NAME_MAX 255 /* # chars in a
>
> > file name */
> > #define PATH_MAX 4096 /* # chars in a path name including nul */
>
> > 至于mac系统,我想也应该是有个上限的,比如MAX_PATH宏定义,只是我对mac编程不熟悉,不了解这个值是否定义。
>
> > 第四条是不准确的,call stack并不是错误的,只是名字显示不出来罢了。
>
> 你的信息也并不完全。Windows下没有symbol的call
> stack显示是错误,而不是仅仅没有名字。这一点可以肯定----我每天都见到因为没有symbol而显示的完全错误的call stack。
问题的关键就在于『不是UTF-8』。所以什么_tfopen都是无关紧要。
> 2、Visual Assist X,绝大部分时候正确
>
也许吧,都有一些能对付的方法。但是从out-of-box的角度,从综合的角度,优劣易见。
不在于用不用,能用symbol当然可以用。问题在于fail-over机制也是很重要的。做系统不能all-or-nothing,不能single-point-failure。如果你做的系统只要一点没有配好就整体实效,也能和用户说『自作孽』?
On Oct 6, 8:14 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 哦,如果你指多个工程,那毫无意义。我想并行编译的共识是就一个工程来说的。
>
> 2009/10/6 Dong Feng <middle.fengd...@gmail.com>:
>
> > Hammm.....
>
> > 我看到的可不是这样,我们公司的大牛们在maillist上讨论的结果也不是这样。不知道是不是同一个VS2008。
>
> > 2009/10/6 missdeer <missd...@gmail.com>:
On Oct 7, 2:33 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 2009/10/7 missdeer <missd...@gmail.com>:
2009/10/7 missdeer <miss...@gmail.com>:
2009/10/7 missdeer <miss...@gmail.com>:
On Oct 7, 5:14 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 讨论工程级的并行意义很小,如果你认为不是毫无的话。因为工程级的并行只要是多任务操作系统都能完成----这就变成讨论操作系统的能力了。既然Windows和OS
> X至少都是multi-task的,我们就不用非得用一个并行编译来confirm了。
>
> 2009/10/7 missdeer <missd...@gmail.com>:
On Oct 7, 5:16 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 如果你没有遇到过这个问题,就不要在这里纠缠了。怎么叫没有整体失效?从没有symbol的那一点往下都会有错误。如果crash在一个第三方dll里,又没有symbol,整个call
> stack都是无效的。你的逻辑完全建立在不了解情况的假设上。
>
> 2009/10/7 missdeer <missd...@gmail.com>:
2009/10/7 missdeer <miss...@gmail.com>:
2009/10/7 missdeer <miss...@gmail.com>:
Windows Call Stack 失效:是指 Call Stack 的全部或者部分(通常是某一点向下)完全混乱。这不是出现在 Linux
或者 OS X 里那种『有 symbol 显示 function name,没 symbol 显示 address』的情况。而是某一点找不到
symbol,以下所有 address 和 function name 都是错误的。
2009/10/7 Dong Feng <middle....@gmail.com>:
On Oct 7, 9:14 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 你自己的代码能永远不调用第三方的DLL吗?如果crash出现在第三方的DLL里,call
> stack里连你自己的代码都是错误的。还大言不惭『"自己的代码总有正确的pdb",有了这个前提,即使没有第三方dll的symbol,那个会失效吗』。说你不了解情况有什么冤枉的。
>
> 2009/10/7 missdeer <missd...@gmail.com>:
On Oct 7, 9:22 pm, Dong Feng <middle.fengd...@gmail.com> wrote:
> 再补充一下,免得又是一个无谓的回合。
>
> Windows Call Stack 失效:是指 Call Stack 的全部或者部分(通常是某一点向下)完全混乱。这不是出现在 Linux
> 或者 OS X 里那种『有 symbol 显示 function name,没 symbol 显示 address』的情况。而是某一点找不到
> symbol,以下所有 address 和 function name 都是错误的。
>
> 2009/10/7 Dong Feng <middle.fengd...@gmail.com>:
>
> > 你自己的代码能永远不调用第三方的DLL吗?如果crash出现在第三方的DLL里,call
> > stack里连你自己的代码都是错误的。还大言不惭『"自己的代码总有正确的pdb",有了这个前提,即使没有第三方dll的symbol,那个会失效吗』。说你不了解情况有什么冤枉的。
>
> > 2009/10/7 missdeer <missd...@gmail.com>:
2009/10/8 missdeer <miss...@gmail.com>:
> 麻烦你回头看清楚关于这个问题的我的第二次回复再来说事
>