I have been using Visual Studio (VC++) and Windows API for a long time, and quite familiar with Linux tool chains, but have no experience on Mac OS X development.
我已经使用Visual Studio (vc++)和Windows API很长时间了,并且非常熟悉Linux工具链,但是在Mac OS X开发上没有经验。
I would like to hear your opinions about the pros and cons of Windows and Mac as development environment. But, as it may be subjective, I would appreciate if you could enumerate some facts, rather than simply saying "A is better than B". In particular, I'd like to hear about the followings:
我想听听你对Windows和Mac作为开发环境的优缺点的看法。但是,因为这可能是主观的,我希望你能列举一些事实,而不是简单地说“A比B好”。具体来说,我想了解以下情况:
- IDE: Visual Studio vs. xcode
- IDE: Visual Studio和xcode。
- API: Win32 API (including native C-based Win32 API, MFC, C#) and Cocoa (Mostly Objective-C)
- API: Win32 API(包括本地基于cbase的Win32 API、MFC、c#)和Cocoa(主要是Objective-C)
- Documentation: MSDN vs. ??
- 文档:MSDN和? ?
- Tool supports: Debugging, profiling, testing, etc.
- 工具支持:调试、分析、测试等。
- Knowledge base: When you have a problem, is it easy to get help from anyone? Are there many books? (In Windows development, there are Petzold, Richter, ...)
- 知识库:当你有问题时,是否容易得到别人的帮助?有很多书吗?(在Windows开发中,有Petzold, Richter,…)
- Mobile apps: iPhone vs. Windows Mobile
- 移动应用:iPhone和Windows Mobile。
I'm afraid that this topic would be controversial. But, I want to know how Mac offers development environment comparing to Windows.
我担心这个话题会引起争议。但是,我想知道Mac如何提供与Windows相比的开发环境。
5 个解决方案
#1
1
I am trying to keep the answers as non-subjective as possible, focusing strictly on facts.
我尽量把答案尽量不主观,只关注事实。
1 - IDE: Visual Studio vs. xcode
1 - IDE: Visual Studio和xcode。
Looking just at feature sets, most developer tool features are pretty standard these days. The basics, code highlight, debuggers, profilers, etc. are available on each. Some tools have features not found in others, but the base level of functionality is pretty stable across the two platforms.
看看功能集,大多数开发工具的功能都是非常标准的。基础、代码高亮、调试器、剖析器等都可以在每个版本上使用。有些工具在其他工具中没有发现功能,但是在两个平台上的基本功能是相当稳定的。
2 - API: Win32 API (including native C-based Win32 API, MFC, C#) and Cocoa (Mostly Objective-C)
2 - API: Win32 API(包括本地基于cbase的Win32 API、MFC、c#)和Cocoa(主要是Objective-C)
They are different, though perform the same functions. Both give their respective developers the building blocks to create applications that fit the designated style of the platform. Both allow a developer to deviate from the "standard" style recommendations.
它们是不同的,尽管执行相同的功能。它们都为各自的开发人员提供了构建适合平台指定风格的应用程序的构建块。两者都允许开发人员偏离“标准”样式的建议。
3 - Documentation: MSDN vs. ??
3 -文档:MSDN与??
Apple has their own documentation set available as well. It's the Apple reference library. http://developer.apple.com/mac/library/navigation/index.html
苹果也有自己的文档集。这是苹果参考图书馆。http://developer.apple.com/mac/library/navigation/index.html
4 - Tool supports: Debugging, profiling, testing, etc.
4 -工具支持:调试、分析、测试等。
Again, both suites contain equivalents. Debuggers, profilers, test harnesses, etc.
同样,两个套件都包含等价的。调试器、分析器、测试工具等。
5 - Knowledge base: When you have a problem, is it easy to get help from anyone? Are there many books? (In Windows development, there are Petzold, Richter, ...)
5 -知识库:当你有问题时,是否容易得到别人的帮助?有很多书吗?(在Windows开发中,有Petzold, Richter,…)
From a total word count of published books, I would hazard a guess that the Windows development world outpaces that for Mac development. That said, there are some very good Mac development books out there. For a new developer, "Cocoa Programming for Mac OS X" by Aaron Hillegass is considered one of the primary sources.
从已出版书籍的总字数来看,我认为Windows的发展速度超过了Mac开发的速度。也就是说,市面上有一些很好的Mac开发书籍。对于一个新开发人员来说,Aaron Hillegass的“Mac OS X的Cocoa编程”被认为是主要的来源之一。
6 - Mobile apps: iPhone vs. Windows Mobile
6 -手机应用程序:iPhone与Windows Mobile。
I don't have any experience with developing for Windows Mobile, but again, I would think that both have reasonably similar tool chains, since everyone "borrows" ideas from each other.
我对Windows Mobile的开发没有任何经验,但是,我认为两者都有相当相似的工具链,因为每个人都“借鉴”了彼此的想法。
All that said, Mac offers a comprehensive development environment for developing for Mac and iPhone platforms, much like Windows has a comprehensive development environment for developing for Windows and Windows Mobile platforms. One major difference is that the standard Mac development tool chain comes with your Mac. You don't have to buy anything else (except for the iPhone developer program subscription if you develop for that platform).
所有这些都表明,Mac为Mac和iPhone平台的开发提供了一个全面的开发环境,就像Windows系统为Windows和Windows Mobile平台的开发提供了一个全面的开发环境。一个主要的区别是,标准的Mac开发工具链和你的Mac一起使用,你不需要购买任何其他东西(如果你为这个平台开发,iPhone开发者计划订阅除外)。
#2
1
1 - IDE: Visual Studio vs. xcode
1 - IDE: Visual Studio和xcode。
Perhaps unsurprisingly, Visual Studio is very Windows-like and Xcode is very Mac-like. Xcode offers a very clean interface with a minimal amount of very large buttons. The code auto-completion in Visual Studio is superior to Xcode, but I believe the latest versions of Xcode have closed this gap significantly. Xcode is very good about using toolbars and accessory panels in consistent ways, so if you're comfortable using the inspector panel in Interface Builder, you'll also be comfortable using the inspector panel in Pages, Numbers, Keynote, iWeb, etc. Visual Studio tends to be very chaotic, i.e. accessing settings for the code editor is different than accessing settings for the reporting services component, which is different than the TFS component, etc.
也许不出意料,Visual Studio非常像windows, Xcode非常类似于mac。Xcode提供了一个非常干净的界面,只有非常大的按钮。Visual Studio中的代码自动完成优于Xcode,但我相信最新版本的Xcode已经显著地缩小了这一差距。Xcode很好使用工具栏和辅助面板以一致的方式,所以,如果你在Interface Builder中舒适的使用检查面板,你也会舒适的在页面中使用监视器面板,数字,主旨,iWeb,等。Visual Studio往往是非常混乱,即访问设置的代码编辑器和报告服务组件的访问设置不同,这是不同于TFS组件,等等。
OS X also offers the incredibly helpful menu search bar, which makes locating the command to open the breakpoints window in Xcode nearly as easy remembering what the key combo is.
OS X还提供了非常有帮助的菜单搜索栏,它使得定位命令在Xcode中打开断点窗口,几乎可以简单地记住关键的组合是什么。
The UNIX foundation of OS X, plus Ruby, Applescript and Automator support makes it very easy to script Xcode in whatever language you're comfortable with. Great for automating SCM processes on builds or automated moving of files or what have you.
OS X的UNIX基础,加上Ruby、Applescript和Automator支持,使得用任何您熟悉的语言编写Xcode非常容易。非常适合自动化的SCM过程的构建或自动移动的文件或什么有你。
2 - API: Win32 API (including native C-based Win32 API, MFC, C#) and Cocoa (Mostly Objective-C)
2 - API: Win32 API(包括本地基于cbase的Win32 API、MFC、c#)和Cocoa(主要是Objective-C)
I can't speak for Windows APIs as I've barely used them, but Cocoa is wonderful. Putting aside any objections people have to Objective-C, it's very rare to hear disparaging remarks about the APIs, they are powerful, easy to use and offer incredibly consistent interfaces, which makes picking up new Apple frameworks pretty darn easy.
我不能说Windows api,因为我很少使用它们,但是Cocoa很好。抛开所有人对Objective-C的异议,很少听到关于api的贬低性评论,它们是强大的,易于使用并且提供难以置信的一致的接口,这使得获取新的苹果框架非常简单。
3 - Documentation: MSDN vs. ??
3 -文档:MSDN与??
Apple's documentation is clean, well written, up-to-date. Almost all classes will contain links to sample projects. Most class documentation of any complexity include sample code, the most complex classes and frameworks will have extensive written documentation, always written in clear and easy-to-understand English.
苹果的文档是干净的,写得很好,最新的。几乎所有的类都包含到示例项目的链接。任何复杂的类文档都包含了样例代码,最复杂的类和框架会有大量的书面文档,总是以清晰易懂的英语编写。
There's a lot of reasons that namespaces would make Objective-C a better language, but I like the fact that a search for 'NSString' in Apple's documentation will always return the pages I'm looking for.
名称空间会使Objective-C成为一种更好的语言有很多原因,但我喜欢在苹果文档中搜索“NSString”这一事实总会返回我正在寻找的页面。
Most importantly, you don't have to wade through advertisements for other Apple products while trying to use the documentation. :-D
最重要的是,你不必在试图使用文档的同时,浏览其他苹果产品的广告。:- d
4 - Tool supports: Debugging, profiling, testing, etc.
4 -工具支持:调试、分析、测试等。
I'm very pleased with the Apple tools that I've used, but having never used Microsoft's tools, I can't comment on any differences between the two.
我对我使用的苹果工具非常满意,但从未使用过微软的工具,我无法评论两者之间的任何差异。
5 - Knowledge base: When you have a problem, is it easy to get help from anyone? Are there many books? (In Windows development, there are Petzold, Richter, ...)
5 -知识库:当你有问题时,是否容易得到别人的帮助?有很多书吗?(在Windows开发中,有Petzold, Richter,…)
I have a lot more trouble getting help on Visual Studio issues. This isn't a fair comparison, though, as we are using an older version of VS where I work. When I Google for an answer on a VS issue, I usually end up on Experts-Exchange or some ancient MS blog. When I Google for help on an Xcode/OS X issue, I usually end up on * or one of the many well-written and up-to-date Cocoa blogs out there. It's not surprising I've been a lot more pleased with my OS X/Xcode experience.
在Visual Studio的问题上,我有更多的麻烦。不过,这并不是一个公平的比较,因为我们使用的是我工作的较老版本的VS。当我用谷歌来回答关于VS问题的问题时,我通常会以专家交流或一些古老的MS博客结束。当我在Xcode/OS X问题上提供帮助时,我通常会出现在*或许多写得很好的和最新的Cocoa博客中。这并不奇怪,我对我的OS X/Xcode体验更满意了。
In addition, I'm usually able to work for significantly longer between Google-help-queries when doing OS X/iPhone development. The consistent class interfaces, well-written documentation and error messages that explain what you did wrong and how to fix it mean that I rarely need to ask for help to figure out the issues I'm having. That has not been my experience working in Visual Studio. Take this with a grain of salt, as I've been an OS X developer for 5+ years and have been working in Visual Studio for < 1.
此外,在使用google -help-查询时,我通常能够在使用OS X/iPhone开发时工作更长时间。一致的类接口、编写良好的文档和错误消息解释了您做错了什么以及如何修复,这意味着我很少需要请求帮助来解决我所遇到的问题。这不是我在Visual Studio工作的经验。以一粒盐为例,因为我已经做了5年的OS X开发人员,并且一直在Visual Studio中为< 1工作。
6 - Mobile apps: iPhone vs. Windows Mobile
6 -手机应用程序:iPhone与Windows Mobile。
Never touched Windows Mobile, so I can't comment.
从未接触过Windows Mobile,因此我无法置评。
#3
0
A couple of areas where Mac OS X wins:
Mac OS X获胜的几个领域:
- performance tools (Shark, Instruments, etc) - nothing even close on Windows (apart from maybe Intel's VTune, which is nowhere near as functional as Shark)
- 性能工具(鲨鱼、仪器等)——甚至都没有在Windows上关闭(除了可能是英特尔的VTune,它的功能远不及鲨鱼)
- all Apple tools are free
- 所有的苹果工具都是免费的。
#4
0
Adding on to what Paul said:
再加上保罗所说的:
I do cross-platform development using Eclipse & occasionally NetBeans - and both work (mostly) the same on the Mac as the PC.
我使用Eclipse和偶尔的NetBeans进行跨平台开发,而且两者在Mac电脑上都是一样的。
OSX having a BSD backend gives you access to the usual unix toolset with a terminal for running shell scripts and other nice command line stuff.
拥有一个BSD后端的OSX可以让您访问通常的unix工具集,其中有一个用于运行shell脚本和其他命令行内容的终端。
#5
0
- Tools support
- 工具支持
I prefer OSX because, through Macports, I have thousands of libraries + source + dependencies available. It is more integrated than cygwin. Also OS X has a proper terminal and X built in. I don't know why windows still has the same terminal as in windows 3.1.
我更喜欢OSX,因为通过Macports,我有数以千计的库+源+依赖项。它比cygwin更融合。同时OS X有一个适当的终端和X内置。我不知道为什么windows的终端和windows 3.1一样。
#1
1
I am trying to keep the answers as non-subjective as possible, focusing strictly on facts.
我尽量把答案尽量不主观,只关注事实。
1 - IDE: Visual Studio vs. xcode
1 - IDE: Visual Studio和xcode。
Looking just at feature sets, most developer tool features are pretty standard these days. The basics, code highlight, debuggers, profilers, etc. are available on each. Some tools have features not found in others, but the base level of functionality is pretty stable across the two platforms.
看看功能集,大多数开发工具的功能都是非常标准的。基础、代码高亮、调试器、剖析器等都可以在每个版本上使用。有些工具在其他工具中没有发现功能,但是在两个平台上的基本功能是相当稳定的。
2 - API: Win32 API (including native C-based Win32 API, MFC, C#) and Cocoa (Mostly Objective-C)
2 - API: Win32 API(包括本地基于cbase的Win32 API、MFC、c#)和Cocoa(主要是Objective-C)
They are different, though perform the same functions. Both give their respective developers the building blocks to create applications that fit the designated style of the platform. Both allow a developer to deviate from the "standard" style recommendations.
它们是不同的,尽管执行相同的功能。它们都为各自的开发人员提供了构建适合平台指定风格的应用程序的构建块。两者都允许开发人员偏离“标准”样式的建议。
3 - Documentation: MSDN vs. ??
3 -文档:MSDN与??
Apple has their own documentation set available as well. It's the Apple reference library. http://developer.apple.com/mac/library/navigation/index.html
苹果也有自己的文档集。这是苹果参考图书馆。http://developer.apple.com/mac/library/navigation/index.html
4 - Tool supports: Debugging, profiling, testing, etc.
4 -工具支持:调试、分析、测试等。
Again, both suites contain equivalents. Debuggers, profilers, test harnesses, etc.
同样,两个套件都包含等价的。调试器、分析器、测试工具等。
5 - Knowledge base: When you have a problem, is it easy to get help from anyone? Are there many books? (In Windows development, there are Petzold, Richter, ...)
5 -知识库:当你有问题时,是否容易得到别人的帮助?有很多书吗?(在Windows开发中,有Petzold, Richter,…)
From a total word count of published books, I would hazard a guess that the Windows development world outpaces that for Mac development. That said, there are some very good Mac development books out there. For a new developer, "Cocoa Programming for Mac OS X" by Aaron Hillegass is considered one of the primary sources.
从已出版书籍的总字数来看,我认为Windows的发展速度超过了Mac开发的速度。也就是说,市面上有一些很好的Mac开发书籍。对于一个新开发人员来说,Aaron Hillegass的“Mac OS X的Cocoa编程”被认为是主要的来源之一。
6 - Mobile apps: iPhone vs. Windows Mobile
6 -手机应用程序:iPhone与Windows Mobile。
I don't have any experience with developing for Windows Mobile, but again, I would think that both have reasonably similar tool chains, since everyone "borrows" ideas from each other.
我对Windows Mobile的开发没有任何经验,但是,我认为两者都有相当相似的工具链,因为每个人都“借鉴”了彼此的想法。
All that said, Mac offers a comprehensive development environment for developing for Mac and iPhone platforms, much like Windows has a comprehensive development environment for developing for Windows and Windows Mobile platforms. One major difference is that the standard Mac development tool chain comes with your Mac. You don't have to buy anything else (except for the iPhone developer program subscription if you develop for that platform).
所有这些都表明,Mac为Mac和iPhone平台的开发提供了一个全面的开发环境,就像Windows系统为Windows和Windows Mobile平台的开发提供了一个全面的开发环境。一个主要的区别是,标准的Mac开发工具链和你的Mac一起使用,你不需要购买任何其他东西(如果你为这个平台开发,iPhone开发者计划订阅除外)。
#2
1
1 - IDE: Visual Studio vs. xcode
1 - IDE: Visual Studio和xcode。
Perhaps unsurprisingly, Visual Studio is very Windows-like and Xcode is very Mac-like. Xcode offers a very clean interface with a minimal amount of very large buttons. The code auto-completion in Visual Studio is superior to Xcode, but I believe the latest versions of Xcode have closed this gap significantly. Xcode is very good about using toolbars and accessory panels in consistent ways, so if you're comfortable using the inspector panel in Interface Builder, you'll also be comfortable using the inspector panel in Pages, Numbers, Keynote, iWeb, etc. Visual Studio tends to be very chaotic, i.e. accessing settings for the code editor is different than accessing settings for the reporting services component, which is different than the TFS component, etc.
也许不出意料,Visual Studio非常像windows, Xcode非常类似于mac。Xcode提供了一个非常干净的界面,只有非常大的按钮。Visual Studio中的代码自动完成优于Xcode,但我相信最新版本的Xcode已经显著地缩小了这一差距。Xcode很好使用工具栏和辅助面板以一致的方式,所以,如果你在Interface Builder中舒适的使用检查面板,你也会舒适的在页面中使用监视器面板,数字,主旨,iWeb,等。Visual Studio往往是非常混乱,即访问设置的代码编辑器和报告服务组件的访问设置不同,这是不同于TFS组件,等等。
OS X also offers the incredibly helpful menu search bar, which makes locating the command to open the breakpoints window in Xcode nearly as easy remembering what the key combo is.
OS X还提供了非常有帮助的菜单搜索栏,它使得定位命令在Xcode中打开断点窗口,几乎可以简单地记住关键的组合是什么。
The UNIX foundation of OS X, plus Ruby, Applescript and Automator support makes it very easy to script Xcode in whatever language you're comfortable with. Great for automating SCM processes on builds or automated moving of files or what have you.
OS X的UNIX基础,加上Ruby、Applescript和Automator支持,使得用任何您熟悉的语言编写Xcode非常容易。非常适合自动化的SCM过程的构建或自动移动的文件或什么有你。
2 - API: Win32 API (including native C-based Win32 API, MFC, C#) and Cocoa (Mostly Objective-C)
2 - API: Win32 API(包括本地基于cbase的Win32 API、MFC、c#)和Cocoa(主要是Objective-C)
I can't speak for Windows APIs as I've barely used them, but Cocoa is wonderful. Putting aside any objections people have to Objective-C, it's very rare to hear disparaging remarks about the APIs, they are powerful, easy to use and offer incredibly consistent interfaces, which makes picking up new Apple frameworks pretty darn easy.
我不能说Windows api,因为我很少使用它们,但是Cocoa很好。抛开所有人对Objective-C的异议,很少听到关于api的贬低性评论,它们是强大的,易于使用并且提供难以置信的一致的接口,这使得获取新的苹果框架非常简单。
3 - Documentation: MSDN vs. ??
3 -文档:MSDN与??
Apple's documentation is clean, well written, up-to-date. Almost all classes will contain links to sample projects. Most class documentation of any complexity include sample code, the most complex classes and frameworks will have extensive written documentation, always written in clear and easy-to-understand English.
苹果的文档是干净的,写得很好,最新的。几乎所有的类都包含到示例项目的链接。任何复杂的类文档都包含了样例代码,最复杂的类和框架会有大量的书面文档,总是以清晰易懂的英语编写。
There's a lot of reasons that namespaces would make Objective-C a better language, but I like the fact that a search for 'NSString' in Apple's documentation will always return the pages I'm looking for.
名称空间会使Objective-C成为一种更好的语言有很多原因,但我喜欢在苹果文档中搜索“NSString”这一事实总会返回我正在寻找的页面。
Most importantly, you don't have to wade through advertisements for other Apple products while trying to use the documentation. :-D
最重要的是,你不必在试图使用文档的同时,浏览其他苹果产品的广告。:- d
4 - Tool supports: Debugging, profiling, testing, etc.
4 -工具支持:调试、分析、测试等。
I'm very pleased with the Apple tools that I've used, but having never used Microsoft's tools, I can't comment on any differences between the two.
我对我使用的苹果工具非常满意,但从未使用过微软的工具,我无法评论两者之间的任何差异。
5 - Knowledge base: When you have a problem, is it easy to get help from anyone? Are there many books? (In Windows development, there are Petzold, Richter, ...)
5 -知识库:当你有问题时,是否容易得到别人的帮助?有很多书吗?(在Windows开发中,有Petzold, Richter,…)
I have a lot more trouble getting help on Visual Studio issues. This isn't a fair comparison, though, as we are using an older version of VS where I work. When I Google for an answer on a VS issue, I usually end up on Experts-Exchange or some ancient MS blog. When I Google for help on an Xcode/OS X issue, I usually end up on * or one of the many well-written and up-to-date Cocoa blogs out there. It's not surprising I've been a lot more pleased with my OS X/Xcode experience.
在Visual Studio的问题上,我有更多的麻烦。不过,这并不是一个公平的比较,因为我们使用的是我工作的较老版本的VS。当我用谷歌来回答关于VS问题的问题时,我通常会以专家交流或一些古老的MS博客结束。当我在Xcode/OS X问题上提供帮助时,我通常会出现在*或许多写得很好的和最新的Cocoa博客中。这并不奇怪,我对我的OS X/Xcode体验更满意了。
In addition, I'm usually able to work for significantly longer between Google-help-queries when doing OS X/iPhone development. The consistent class interfaces, well-written documentation and error messages that explain what you did wrong and how to fix it mean that I rarely need to ask for help to figure out the issues I'm having. That has not been my experience working in Visual Studio. Take this with a grain of salt, as I've been an OS X developer for 5+ years and have been working in Visual Studio for < 1.
此外,在使用google -help-查询时,我通常能够在使用OS X/iPhone开发时工作更长时间。一致的类接口、编写良好的文档和错误消息解释了您做错了什么以及如何修复,这意味着我很少需要请求帮助来解决我所遇到的问题。这不是我在Visual Studio工作的经验。以一粒盐为例,因为我已经做了5年的OS X开发人员,并且一直在Visual Studio中为< 1工作。
6 - Mobile apps: iPhone vs. Windows Mobile
6 -手机应用程序:iPhone与Windows Mobile。
Never touched Windows Mobile, so I can't comment.
从未接触过Windows Mobile,因此我无法置评。
#3
0
A couple of areas where Mac OS X wins:
Mac OS X获胜的几个领域:
- performance tools (Shark, Instruments, etc) - nothing even close on Windows (apart from maybe Intel's VTune, which is nowhere near as functional as Shark)
- 性能工具(鲨鱼、仪器等)——甚至都没有在Windows上关闭(除了可能是英特尔的VTune,它的功能远不及鲨鱼)
- all Apple tools are free
- 所有的苹果工具都是免费的。
#4
0
Adding on to what Paul said:
再加上保罗所说的:
I do cross-platform development using Eclipse & occasionally NetBeans - and both work (mostly) the same on the Mac as the PC.
我使用Eclipse和偶尔的NetBeans进行跨平台开发,而且两者在Mac电脑上都是一样的。
OSX having a BSD backend gives you access to the usual unix toolset with a terminal for running shell scripts and other nice command line stuff.
拥有一个BSD后端的OSX可以让您访问通常的unix工具集,其中有一个用于运行shell脚本和其他命令行内容的终端。
#5
0
- Tools support
- 工具支持
I prefer OSX because, through Macports, I have thousands of libraries + source + dependencies available. It is more integrated than cygwin. Also OS X has a proper terminal and X built in. I don't know why windows still has the same terminal as in windows 3.1.
我更喜欢OSX,因为通过Macports,我有数以千计的库+源+依赖项。它比cygwin更融合。同时OS X有一个适当的终端和X内置。我不知道为什么windows的终端和windows 3.1一样。