MAC 到底自带了多少消失了的编程语言言

为什么说每个程序员都应该有台Mac电脑 - 简书
为什么说每个程序员都应该有台Mac电脑
1979年,刚被踢出 Lisa 项目组的 史蒂夫·乔布斯 从 杰夫·拉斯金(Jeff Ruskin) 手中夺走了新成立的 Mac 团队,为了证明自己的天赋与实力,乔布斯下定决心要倾尽全力建造出一台完美的个人电脑。
乔布斯认为,『完美的艺术品只有天才才能造出来』,于是他找来了一群天才。
Mac 初始团队成员从左至右:乔治·克罗、乔安娜·霍夫曼、伯勒尔·史密斯、安迪·赫茨菲尔德、比尔·阿特金森、杰里·马诺克
他们相信『过程就是奖励』,他们『每周工作 90 小时』只为能做出最『酷毙了』(Insanely Great)的产品,他们像海盗一样行事:既为自己的工作感到自豪,又愿意去窃取别人的灵感。他们和乔布斯一样,都是充满了朋克精神的天才极客。
Mac 初始团队的海盗旗
多年后乔布斯回忆到,『最初的Mac团队让我知道,最顶级的人才喜欢一起工作,而且他们是不能容忍平庸作品的』。到今天,Mac 的开发者与用户或多或少地继承了这种精英文化,他们是一群热爱编程的人。
天才程序员王小波在他的《思维的乐趣》中对编程有着这样的一番描述:『计算机编程和解几何题有共通之处:对了马上能知道对,错了也马上知道错,干干脆脆。你用不着像孟夫子那样,养吾浩然正气,然后觉得自己事事都对。』
我窃以为,编程能力的提升有助于提升独立思考与理性思维能力。而理性是一种科学的态度,它能让我们和我们周遭的世界更加美好。
2008年我从大学毕业,加入了支付宝 UED。部门在白鸦和大老板 James 的努力下,全都换上了 iMac 与 Macbook 。后来从 Felix Ding 那里,我知道了更多关于 Mac 的历史。
Mac 『1984』宣传片,宣传的不是他的产品,而是一种自由多元化信仰,它帮助我打开了一扇通往人格独立之门。从乔治·奥威尔到『逻辑思维』,从《乌合之众》到《论美国的民主》,我逐渐成长为一名自由主义者。
『 Think Different 』广告片中,Mac 被定义为敢于挑战权威、富有创新精神的叛逆者。那些旗帜鲜明的人,愿意买一台 Mac 来标榜自己的 『非同凡响』。
ShiTiven 是我认识的第一个使用 Mac 的全栈工程师。他喜欢喝咖啡,喜欢 Python 和 CoffeeScript 。他有着极快的语速和编码速度,他曾经在某个下午误饮了一整瓶绍兴黄酒后,完成了支付宝第一版『 AA 收款』组件的开发。他告诉我把 Mac 的默认语言设置为英文,这样其他人会对我刮目相看。很多年没听到他吹牛了,只听说阿里在美国上市后他把 Mini 换成了宾利。
dc 是我认识的第一个使用 Mac 的前端大神,他是《高性能 JavaScript 》的译者,前端框架 Arale 1.0 的作者。2009年他留着一头飘逸的长发,是和张克军一样优雅的男人。从他那里我知道了张国荣的『我就是我,是颜色不一样的烟火』。他现在在北京经营着一家逼格很高的公司,喜欢跑步和滑雪。
电影《东邪西毒》中张国荣扮演的欧阳峰
2009年,我入手了自己的第一台 MacBook Pro,希望能成长为一个牛逼的程序员。
Mac 是第一款使用图形用户界面(GUI)和鼠标的个人电脑,在使用 Mac 的过程中,我也开始慢慢感受到了那『God is in the details』的完美体验。
Mac OS 的顶部菜单栏设计遵循了『费茨定律』,这是为什么 Windows 的菜单功能难用的原因,因为它不敢抄得太像 Mac;
Applications、Downloads 等内置目录规则和 Spotlight 文件检索,很好的平衡了文件管理与定位的效率;
一致的键盘快捷键设计与 UI 规范,提升了应用程序的可用性与美观度;
有趣的 Dock、精美的拟物化图标以及大量优秀的无衬线字体,让 Mac 时尚感和设计感十足;
打开 Macbook 机身壳,你会看到那精美的电路板。乔布斯从他父亲身上学到,即使是隐藏的部分也要做得很漂亮。这点重要么?想想中国各大城市的下水道建设吧:)
关于 Mac 与 Windows 的对比,《乔布斯传》中记录了更多细节:
Mac 电脑的包装重做了 50 次,目的是要让 Mac 在性能和外观上都给人惊艳的感觉;
2000 年上市的 Power Mac G4 Cube 进入了纽约现代艺术博物馆;
Windows 抄袭 Mac 是合法的。1984年,为了不让微软停止开发 Mac 版的 Word、Excel 等应用,苹果被迫签署了一份合同,同意微软有权在其即将推出的Windows系统中使用苹果公司的部分图形功能;
乔布斯认为最好的产品是『一体的』,是端到端的,软件是为硬件量身定做的,硬件也是为软件度身定制的,Mac 上的操作系统只能在自己的硬件上运行。这也是为什么大家会觉得苹果的产品体验更好、性能更好,而 Android 上的动画不论如何优化都无法获得 iOS 的流畅度的原因;
『微软唯一的问题就是他们没有品位,一点都没有。并不是狭义上的没有品位,而是广义上的,他们没有独到的见解,也不会在产品中注入多少文化……因此,我想自己之所以感到难过并不是因为微软成功了,我对他们的成功没有异议,大部分都是他们应得的。我难过的是,他们做的确实只是三流产品。』当然这段话只是乔布斯在 1996 年对微软的看法:P
书中有几个小故事,足以说明为什么说 Mac 的缔造者们是一群天才程序员:
Mac 在一开始就实现了桌面窗口效果,比尔·阿特金森(Bill Atkinson) 设计了重叠窗口『截取』算法(让 CPU 只计算窗口中显示的部分,略去对未显示部分的计算,从而节省了处理器的运算时间,提高系统运算速度),这一特性 Windows 在十年后的 Windows 95 中才实现。
Mac 的桌面窗口一开始就被乔布斯要求设计成圆角,而计算机画圆形图案涉及到平方根计算,当时的 CPU(摩托罗拉68000微处理器)并不支持平方根计算。为此,阿特金森研究出一个加法运算来代替平方根运算的算法:一组奇数序列相加可以得到一组完全平方数序列(如,1+3=4,1+3+5=9,等等)。
苏珊·卡雷(Susan Kare)主导设计了 Mac 上各种漂亮的字体,结合激光打印技术和强大的图形功能,Mac 推动了桌面出版产业的诞生。字体技术不再只有印刷工人和其他与油墨打交道的人才能使用。
95年,阿维·泰瓦尼安(Avie Tevanian)领导改进了 Mac OS ,将 NEXTSTEP 操作系统核心技术整合其中。从此 Mac OS 成为了基于 Unix ,同时包含面向对象编程语言 Objective-C 和先进 GUI 的优秀操作系统。这也是为什么使用 Mac 的程序员通常比使用 Windows 的程序员更熟悉 Shell 操作与各种编程模式,对美的设计形式也更加敏感的原因,而这些是成为全栈工程师的一些基础要求。
2005年,Mac OS 在几个月的时间内完成了对 Intel CPU 的支持。这件事成为 比尔·盖茨 亲自承认真正钦佩苹果的几个壮举之一。
我的 iMac 与 MacBook
所以说,每个程序员都应该有台 Mac 电脑,每家有理想的互联网公司都应该给他的程序员配上一台 iMac 或 MBP。
当午后的阳光透过窗户照在这些 iMac 精灵身上时,你能体会到当年乔布斯与 Sir Jonathan Ive 漫步于花园之中,看到那一排排迎着太阳转动的向日葵时的那份喜悦之情。
最后,让我以『 Think Different 』宣传片的广告词《致疯狂的人》作为本文的结尾来勉励自己和各位同学:
他们特立独行。他们桀骜不驯。他们惹是生非。他们格格不入。他们用与众不同的眼光看待事物。他们不喜欢墨守成规。他们也不愿安于现状。你可以认同他们,反对他们,颂扬或是诋毁他们。但唯独不能漠视他们。因为他们改变了寻常事物。他们推动人类向前迈进。或许他们是别人眼里的疯子,但他们却是我们眼中的天才。因为只有那些疯狂到以为自己能够改变世界的人,才能真正改变世界。
此外,我精心整理了一份《》,希望对 Mac 新人有所帮助。
一个爱好编程的自由主义者
微信公众号「猫哥学前班」VS 2017 for Mac 已发布,有这些新特性 - 编程语言 - ITeye资讯
相关知识库:
我们非常荣幸地宣布 Visual Studio 2017 for Mac 现已推出。 Visual Studio for Mac 是 Visual Studio 系列的新成员。通过它,macOS 上的开发人员可以使用 Xamarin 和 .NET Core 来构建移动、Web、和云应用,也可以使用 Unity 来开发游戏。
使用 Visual Studio 2017 for Mac 可以开发适用于 Android、macOS、iOS、tvOS、watchOS、Web 和云的应用。 快速编码、轻松调试和诊断、时常测试,并且可以放心地进行发布。 此新版本发布之后,可使用版本控制、更具敏捷性且可高效协作!
Visual Studio for Mac 中的新增功能
Visual Studio for Mac 能够满足你对现代 IDE 的所有期望,包括功能完整的源代码编辑器、代码搜索和导航、功能强大的调试器、可自定义的工作区、Git 集成和丰富的扩展系统。
其他功能包括:
基于 Roslyn 的 C# IntelliSense、重构、分析器和代码修复。
基于 NuGet 的程序包管理。
Visual Studio 兼容的项目格式。
MSBuild 生成引擎。
集成单元测试。
对 F# 的支持。
.NET Core 支持
平台可以创建在 Windows、Linux 和 Mac 上运行的应用程序。 Visual Studio for Mac 支持加载、创建、运行和调试 .NET Core 项目。
若要运行 .NET Core 项目,应该 .NET Core SDK。
.NET Core 支持包括:
C# 和 F# IntelliSense。
控制台、库和 Web 应用程序的 .NET Core 项目模板。
完整的调试支持,包括断点、调用堆栈、监视窗口等。
NuGet PackageReferences 和基于 MSBuild 的还原。
集成单元测试支持使用 .NET Core SDK 附带的 Visual Studio 测试平台进行运行和调试测试。
从旧的 project.json 格式迁移。
Web 工具
Visual Studio for Mac 添加了针对 HTML、CSS 和 JSON 文件的新的 Web 工具支持。
HTML
新的 HTML 模板。
改进的智能缩进和格式设置。
改进的着色处理功能。
改进的 Intellisense。
代码折叠(必须启用)。
Unminify 命令。
改进的代码模板(片段)。
使用 &div& 环绕选定内容。
可以将选定文本向上/向下移动的向上/向下选项。
CSS
改进的智能缩进和格式设置。
改进的着色处理功能。
改进的 IntelliSense。
代码折叠。
多个代码模板(片段)。
可以将选定文本向上/向下移动的向上/向下选项。
JSON
有权访问 schemastore.org 的架构选择器。
从架构进行验证。
从架构进行 IntelliSense。
改进的智能缩进和格式设置。
改进的着色处理功能。
注释/取消注释。
引号注入和大括号匹配。
可以将选定文本向上/向下移动的向上/向下选项。
Xamarin
的卓越支持,可以开发适用于 Android、macOS、iOS、tvOS 和 watchOS 的丰富本机体验。 使用 Xamarin.Forms 跨平台应用程序可以在 Android、iOS 和 macOS 之间共享基于 XAML 的 UI 代码,而不会限制对本机功能的访问。
构建、部署、调试和分析。
适用于 iOS 和 Android 的拖放式 UI 设计器。
Xamarin.Forms 的实时预览。
兼容 .NET 标准的框架。
对本机 API 的绑定。
多平台应用模板
现在,使用多平台 Xamarin.Forms 应用和本机应用项目模板可以快速创建多平台移动应用和其云后端。
这些模板可以创建多个项目:通过共享的项目共享代码的 Xamarin.iOS 应用项目和 Xamarin.Android 应用项目,以及实现应用后端服务的 .NET Core Web API 项目(图 1)。
(图 1)使用 .NET Core 调试
将 ASP.NET Core Web 应用发布到 Azure 应用服务
可以将 ASP.NET Core Web 应用发布到 Azure 应用服务(图 2)。
(图 2)发布到 Azure 内容菜单
若要发布 Web 应用,请在“Solution Pad”或“项目”菜单中选择“发布|发布到 Azure”命令。 然后选择要部署到的应用服务,或者新建一个 Azure 应用服务(图 3)。 发布的输出将记录到“发布”输出板,并且将在项目中的“属性”&“PublishProfiles”下创建发布配置文件。
(图 3)发布新的应用服务
在项目中定义的所有发布配置文件都将显示为“发布”菜单中的选项,所以无需再次选择“应用服务”即可对其进行部署。
多进程调试
项目具有“项目运行配置”,可以指定运行项目的选项和参数。 在工具栏中的下拉列表中可以查看和更改当前活动的“运行配置”。
在 Visual Studio for Mac 的“解决方案运行配置”窗口中可以同时启动多个项目。 可以在“解决方案选项”对话框中创建解决方案运行配置。 调试移动应用与其后端服务的交互方式时,此功能非常有用。
TextMate 包
Visual Studio for Mac 支持 TextMate 语言包,可使用此语言包添加:
编辑器颜色主题。
代码片段。
新语言的语法,启用突出显示以及基本 IntelliSense。
可以在“首选项”&“文本编辑器”&“语言包”中添加 TextMate 包。
音频设备向导
新的音频设备扩展向导(图 4)增添了 3 个选项,可用于自定义音频设备项目模板的 plist。
音频设备类型
&&&&&&& 乐器
&&&&&&& Generator
&&&&&&& 效果
&&&&&&& 音乐效果
子类型代码:必须正好是 4 个字符。
制造商代码:必须正好是 4 个字符。
(图 4)音频设备向导
watchOS 扩展向导
在 Xcode 8.3 中,Apple 引入了 watchOS 扩展(与 iOS 扩展类似),第一个引入的是 Intents 扩展 (Siri)。
已更新 watchOS 扩展向导(图 5)以支持 watchOS 扩展,且现提供专用的 Intents 扩展模板。
(图 5)watchOS 扩展向导
其他改进和 Bug 修复
在自动完成窗口中处理 Deprecated 和 Obsoleted 属性。 这使得过时的 Xamarin.iOS 和已弃用的 API 显示为删除线。
现在,当部署到设备时会显示进度栏。 此功能对 watchOS 非常有用。 (需要 Xamarin.iOS 10.5.0.323+)。
现在我们使用 Xamarin.iOS 中已知的 OS 版本来填充部署目标下拉列表。
这样操作有两个优点,我们可以提供每个应用扩展类型的准确最低版本,并且可以避免显示 OS 版本(基于 Xcode,Xamarin.iOS 尚不支持)。
Mac/iOS API 问题分析器
触发分析器时修复重复的标记。
从属性中获取“消息”(框架中解释为什么 API 已弃用/过时的信息),并将该信息附加到不同的可用性消息。
更新所有可用性消息,以提高清晰度。
通过在可用性消息中使用符号名称来提高清晰度,从:
API Usage Issue: this API requires iOS 10.0 or later更改为: 'MyMethod' is only available on iOS 10.0 or newer
Android
新的 SDK 管理器
Visual Studio for Mac 自带 Android SDK 管理器(图 6)。
(图 6)Android SDK 管理器
现在是通过 /t:Install msbuild 目标将项目部署到设备或仿真程序。 以前,Visual Studio for Mac 使用自己的内部逻辑将应用程序部署到设备,现在则使用可从终端利用或在 Windows Visual Studio 中使用的相同公用目标。 这样做的好处之一是现在有更好的日志可用于诊断部署问题。
现在,class-parse 是新绑定项目的默认值。 class-parse 无需 JVM 即可直接分析 Java 字节码,并且能够从包含调试符号(例如使用 javac -g 编译的字节码)的 Java 字节码中提取参数名称。 “class-parse”也不会“跳过”从无法解析的类型继承或者包含无法解析的类型的类。
可访问性
此 Visual Studio for Mac 版本包含对 Voice Over 等辅助技术的支持。 借助这些技术,可以访问编辑器和解决方案资源管理器等许多用户界面部分,但是这些技术仍在改进之中,我们会在即将推出的版本中提供进一步改进。
相关资源推荐51被浏览63030分享邀请回答153 条评论分享收藏感谢收起162 条评论分享收藏感谢收起查看更多回答如何选择适合自己项目的编程语言
招聘信息:
作者:John Hattan与操作系统一样,在办公室软件套装和计算机中也具有各种计算机语言。存在这种多样性的原因与其它地方的多样性一样—-因为没有单一的解决方法能够解决所有的问题。有些语言在原始速度上更出色。有些语言能够帮助你更轻松地编写防止崩溃的代码。有些语言非常擅于剖析文本并有效作用于服务器上。有些语言具有强大的公司投资。也有些语言之所以存在是因为它们与大量不适合重新编写的现有代码相兼容。你的语言选择将影响着你的项目,并且你不可能在项目中途突然改变语言,所以这是你必须重视的一个选择。这也不是一个你能够根据自己的个人喜好或朋友的提议而做出的选择。你关于项目的计算机语言的选择应该是经过仔细研究且务实的。最重要的是你的结果的质量而不是语言是否配得上你个人的编程技巧。本文将分析一些游戏程序员经常使用的语言。这并不是一个完整或深入的列表。本文倾向于呈现给你最受欢迎的游戏开发语言,同时还会提供一些简短的介绍以及它们在哪种情境下是有利于项目或不利于项目。如果你还是一位新手,那么这一列表可能会包含一些你并不熟悉的术语,并且也没有足够的空间对这些术语进行详细解释。所以我建议你可以在维基百科上进行相关搜索。CC程序设计语言可以说是父辈一般的存在,或者对于本文提到的其它语言具有非常重要的影响。尽管C是源自一些已经被淘汰的其它语言,但是现在它也成为了计算机“根植”语言之一。虽然今天还存在一些比C先诞生的语言存在(如COBOL,FORTRAN,Lisp,Smalltalk)并且与C没有多大关系,但是20世纪80年代以来所诞生的每一种语言至少在某种程度上具有与C语言类似的语法。C是经典的“支柱语言”,也就是使用开放和关闭的花括号将一些表述组合在一起的有结构的goto-less语言。这是之后许多语言中所呈现的方式(包括C++, Java, C#, ActionScript, PHP)。C语言的无尽结构的一个优势便是一旦你理解了如何基于C语言完成某事,你便能够将其带到其它语言中(并且几乎没有任何改变)。例如C和PHP中的if(), while(), and for()表述都是相同的。也就是说如果你熟悉了C语法,它将在之后带给你非常大的帮助。优点:C适用于编写简短且快速的程序。这是我们很容易与之互动的语言。该语言本身与库子程序一样都是标准化的,所以讲程序移向其它平台将会是一个直接的过程(如果你事先计划好的话)。缺点:快速编写小程序的能力对于C来说也是不利的,因为通常情况下C并不是用于对象导向型编程,这是构建更加适合于基于分散式开发的大型程序的方法,而大型C程序很容易变得杂乱无章。尽管许多大型项目是基于C语言Unix,Windows,Oracle进行编写,但是管理一个基于C语言的大型项目要求比围绕着更加模块性所创造的语言更多纪律。可移植性:尽管语言本身以及ISO功能调用是可移植的,但是这些调用却受限于控制流,简单的内存管理以及文件处理方面。现代用户界面设计,如菜单,按键,对话框等等都是不可移植的,所以你需要编写对第三方UI工具箱是有效的代码或计划再次编写你的用户界面。尽管这并不是最早出现的语言,但是C程序库却呈现出了它的年龄。像内存管理和附带条件等许多较有意义的程序库功能都拥有一个简单的语法,能够在后续语言中进行有效调整。尽管为了与时俱进C语言进行过多次的重新设计与调整,但是仍有些语法却是违反直觉的。为了与现有的代码保持兼容仍保留了一些较为奇怪的语言结构。是否适合新手:并没有很好。尽管C语言非常简洁且容易掌握,但是许多C程序库调用却很陈旧,且很容易用于一些后续语言中。资源:尽管Kernighan和Ritchie的《The C Programming Language》是该主题的“经典”著作,但是该书只是快速地提及该主题,甚至未能让编程新手们好好理解。不过还有其它值得推荐的相关书籍,如《C How to Program》,《C Programming: A Modern Approach》和《C Primer Plus》。C++C++(from sina)C++是C语言最早建立的“子”语言。它诞生于20世纪80年代,是作为C语言的延伸版本并支持“类”,这是将原始数据类型和算法聚集到更容易创建现实世界(或者游戏中的模拟世界)对象模型的内容中的抽象数据结构。C++类同样也支持“隐藏数据”概念,在这里你可以将一个对象的根本执行隐藏起来。尽管这一方法看似有点难理解,但在基于团队环境编程时这却非常有帮助。这让你们能够在对象界面如何运行且无需考虑其内部运行方面达成一致意见。这就像是在说“我将给你一份工作,但我不关心你是如何做的,只要你能够完成它,并且结果是我想要的便可。”优点:完全支持面向对象(OO)的范式,这比支持大型项目的C语言好多了。与C不同的是,它包含了一个带有常见数据结构和算法的设计精巧的程序库。缺点:随着每一次迭代,C++的算法变得更大且更复杂,现在这一预言完全变成是拜占庭风格了。该算法本身很容易被滥用,虽然C++支持团队变成,但是且巨大且深层次的算法会让代码变得更难读。可移植性:尽管是源于C语言,C++却拥有比前者更棒的可移植性。引导大多数现代移植工具箱都是执行于C++对象程序库而不受早前的C功能程序库。此外,C++的标准程序库以及非常有用的Boost程序库非常标准化且是跨平台的,尽管这两者都很复杂。是否适合新手:尽管在C++中内存管理和I/O操作都比C语言好理解,从规模来看C++拥有非常高的学习曲线。他们并不需要为此学习整个语言。资源:关于C++的一本完美的新手书籍是Steve Heller的《C++: A Dialog》。这是一本节奏适度且容易理解的书,非常适合编程新手。还有更加全面的方法,即Bruce Eckel的《Thinking in C++》系列将通过1600页内容告诉你所有你需要知道的C++。你都可以免费下载到这些书籍。或者在谷歌上进行搜索,你便能够找到它们的官网。C或C++:除“DirectX或OpenGLad”以外,这是在准备学习语言时最常被问到的问题。除了一些较小的例外外,C++可以说是C语言的超集。这意味着所有C语言所做的都与C++一样。每一个C++编译器都将编译C语言,而在今天我们很难找到唯独支持C语言的编译器。尽管这些事实让选择从C语言开始然后再学习剩下的语言更具逻辑性,但是尽早学习类和OO编程将会更有帮助。Objective-CObjective-C是带有动态执行时间的对象导向型编程语言。就其本质来看,它就是C语言的一个超集。它集成了来自C语言的基本语法规则,同时也拥有一些构造上的变化。例如它将包含一些方法调用,整体的定义规则等等。Objective-C是MAC OS X和ioS编程的主要语言,也是专属于苹果的语言。它支持各种开发技巧,功能,程序库以及许多能够凸显该语言的额外功能。该语言支持处理2D和3D图像(基于OpenGL)的广泛嵌入式程序库,这能够帮助许多小型游戏开发者通过使用强大且原生的解决方法创建自己的第一款游戏。其它程序库也能够帮助游戏开发,特别是手机游戏开发。还有一个突出的功能便是引用计数垃圾收集器,与非常复杂的内存管理系统相互协作。优点:Objective-C是C语言的一个强大超级,能够创造并允许强大且灵活的应用。它能够利用C/C++代码并轻松移植全新项目,扩展现有的能力等等。该语言能够拥有各种有帮助的程序库以及Xcode最佳的开发环境之一。这是一直能够基于多种方式进行使用的强大OOP语言。缺点:Objective-C是专属于苹果的语言,因此你需要拥有一台苹果计算机,运行最新的Mac OS X版本才能开发你的应用。另外一件需要注意的事是该语言的有些语法规则可能会让新手感到困惑。方法调用远未达到标准,类定义也会引起没有C/C++经验的新手的困惑。此外,如果你计划面向iOS开发应用的话,你便需要掌握基于较高层次的内存管理知识。可移植性:没有。任何基于Objective-C进行编写的内容都必须属于苹果的产品。如果未基于其它语言重新编写,你便不能移植Objective-C项目到任何平台上。也就是说Objective-C只适用于Mac OS X和iOS开发。是否适合新手:Objective-C并不是最适合新手的语言,尽管它也不是最复杂的。如果学习C#或Java的话你会更轻松,然而相对于C++,精通Objective-C会更简单。新手通常需要阅读许多关于内存管理等理念,如果你刚刚起步,这有可能是一个较为困难的过程,但是将带给你长期的帮助。资源,除了官方的苹果向导,在上还有许多有帮助的免费电子书—-/objective-c/参考:Objective-C基础:Objective-C内存管理:基于Objective-C的游戏开发:Objective-C与Java的比较:Objective-C与C++的比较:一般的iOS开发与Android开发的比较:Java从实用性来讲,Java可以说是第一种“网页”语言。尽管像Perl等语言会突然发现它们处理字符串的能力在恢复价值和发送HTML到网页浏览器上是天生的,但是Java是最早发现自己是根植于浏览器中,最初是在一个有趣但却非常古怪的HotJava浏览器(基于Java本身进行编写),而之后又以现有浏览器的扩展形式呈现出来。尽管从表面上看其结构与C和C++类似,但是Java的后端表现却与这两种语言不同。比起编译Java源代码到原生及其代码中,Java编译器将编译由Virtual Machine或VM所运行的“字节码”。Java字节码是一种汇编语言,但却不是与特定处理器有关系的汇编语言。Java VM是字节码的运行时解释器,将为你的机器目标处理器解释字节码。这一方法的优点在于,如果目标及其拥有可兼容的Java VM或Java所承诺的“编写一次就能够在任何地方运行”,你便可以在不同机器间移动Java字节码,并且可以无需做出任何改变而运行。这一方法的缺点在于Java字节码并不是原生机器代码,尽管像“及时”编译器能够完善VM性能,但实际上你是在运行时间做一些解释,这将引起较小但却可衡量的性能打击。还有其它缺点便是,Java的现实性并不符合语言的早期承诺。尽管在网页中执行游戏的理念几乎能够马上让所有人动心,但现实是Java VM并不能与所有内容兼容,使用特定VM而编写的Java应用或支程序可能不能运行于带有其它VM版本的机器上。“编写一次就能够在任何地方运行”被改为“编写一次便能够移植到任何地方”,也就是说一旦你完成你的Java代码的编写,它便能够有效地运行于一个平台上,然后你所面临的重要任务便是确保你的应用能够有效运行于所有系统上。Java的第三个缺点便是源自其GUI。尽管首次“传递”促使Java GUI使用原生的OS控制(按键,滚动条等等),较小且较快,但却没有深度。下一次传递Swing虽然看起来好多了,但是表现仍然很早,并且完全不同于最初的控制。最糟糕的是Sun(Java之父),太慢了,难以添加现有的OS功能,就像关于ClearType字体渲染的支持。因此,Java应用总是着眼于一些与现代化不着边的版本。但是在服务器编程方面,Java便扬眉吐气了。VM的一大优势便是,它并非真正的处理器,只是一个模拟,所以销毁VM并不是多大的问题。如果你对于Java VM感到困惑,这并不会真正影响基本的操作系统,你大可以选择关闭并重新开始,并且不需要重启整个机器。再加上Java的内存管理模式是源自C++和C语言,所以像分配内存(无需将其带回之前的系统)这样的问题便不再是多大的问题了。像这样的系统非常适合服务器环境。服务器可以突然出现并在必要的时候消灭VM且不会对潜在OS造成任何影响。同样地,GUI问题也并不适用,如果你的服务器软件看起来并不壮观,它便一点都不重要,除非你想要给服务器管理员留下深刻印象。今天你将会发现许多商业大型多人游戏在服务器端使用了Java。Three Rings的多人游戏便是个很好的例子,他们不仅在客户端,同时也在服务器端使用了Java语言。Java发挥重要作用的另一个领域便是手机市场。J2ME(Java 2,Micro Edition)是带有删节类程序库(游戏包注:专门为在手机和其它较小的设备上运行而设计的)的Java VM的微小版本。实际上,如果你包含了手机目标群体,Java可以说是现在最受欢迎的平台之一。优点:Java的Virtual Machine加上其内存管理和不再需要的内存的自动收集让你能够创造非常诱惑力且足以避免被摧毁的软件。它同样也带有强大的扩展文件传统。缺点:Java的“编写一次便能够在任何地方运行”的承诺未能兑现。Java类程序库已经经过多次重新编写且未删除早前的调用,所以即使程序库与早前的代码是反向兼容,似乎还有三种方法能够做到一切,除了因为“过时”而被拒绝。可移植性:非常不错,但却不像想象中那么棒。基于Java创造一款可移植且能够使用潜在的OS最新功能的应用与在C++上这么做一样困难。是否适合新手:非常适合。尽管在不遭遇弃用对象的前提识别执行某项任务的“正确”方式对于那些还在摸索语言的新手来说有点困难,但是语言本身的核心是很容易理解的。同样地,Java也是许多大学课程的标准语言。资源:Oracle Inc.拥有许多对Java程序员有帮助的优秀资源。.NET Languages(特别是C#何Visual Basic).NET是微软对于Java VM的基本答案。实际上,.NET是以整体技术命名的。真正的VM名字是CLR(公共语言运行时),之前所谈论的关于Java VM的一切内容都适用于CLR,但也有一个例外:CLR从一开始便不是用来“匹配”单一语言,就是Java那样。因为这样,有许多语言使用了CLR去执行后端处理。不管是像COBOL和FORTRAN这样的早前语言还是像Python这样的现代语言都能够瞄准CLR。需要提醒你们的是,有些CLR项目是小型的单人项目,所以如果你在CLR版本中找到你最喜欢的语言也不要太过兴奋,因为在这里有些编译器还不够成熟。微软所开发的C#和Visual Basic都是最受欢迎的CLR语言。C#是源自Java的语言,它带有90%的Java语法,尽管从表面看它更像是源自C或C++。C#拥有一些很棒的语言扩展,即基于Java慢慢添加的内容,并重新编写了类程序库。简称VB.NET的Visual Basic是CLR执行以及对于微软已建立且受欢迎的Visual Basic环境的替换。尽管它仍被称为“Basic”,但却不再是全部大写,它与早前的BASIC解释器(贯穿于20世纪80年代所出售的所有计算机的ROM中)只带有少量的相似处。现在,它的语法与本列表中的其它语言非常相似,尽管它仍然未使用括号去整合某些内容。它同样也使用了更具对象导向型“点记法”去调用功能而不受语言的前CLR版本的更大的功能程序库。优点:尽管Java并未投入太多努力面向Java VM编译语言,但是CLR从一开始便是为了支持这一点。因此存在许多基于CLR的语言,并且它们很容易进行互通。.NET技术获得微软的Visual Studio环境的大力支持,而这也是一个非常成熟且具有丰富的功能的开发环境。C#对于微软的XNA技术来说应该算是首要的编程语言,这是创造在Windows和XBox 360游戏主机间可移植游戏的一种方法。缺点:与Java不同的是,CLR应用不能像网页中小程序那样运行。尽管“Silverlight”技术允许这点,但是对于游戏来说这却太迟了,并且不能像Java和Flash那样根植于浏览器中。基于CLR的应用比想象中更难移植。可移植性:尽管存在第三方将CLR移植到到除Windows外的其它操作系统,但是基于这一方向的努力却远小于面向Windows的努力。所以尽管你可能面向Windows创造一个非常有活力的.NET应用,但是你在Mac和Linux上的执行却不会多么顺畅。是否适合新手:都适合。这两种语言都是很直接且容易理解的。此外,它们与Visual Studio环境的紧密关系也让设置变得更加简单。资源:Flash和ActionScriptFlash在这一列表中算是一个不寻常分子,因为它并不是源自语言本身,而是伴随着一个动画工具诞生。在20世纪90年代,一些开发者对在网页上呈现动画图像所要求的规格以及它们所呈现的方法感到震惊,所以他们便创造了一个名为“FutureSplash”的浏览器插件以及一个能够创造紧凑的向量式动画的绘制和动画工具。互动网页业务巨头Macromedia(已经拥有能够通过自己的Director动画工具播放内容的Shockwave插件)购买了FutureSplash,并将其重命名为“Flash”。在经历了几个版本后,Macromedia添加了一个JavaScript子集,将“ActionScript”整合到插件中,于是Flash便成为了一个完整的编程环境,尽管它经历了几个语言版本,并且开发工具也发展成对除简单网页游戏之外的内容有帮助的优秀环境。今天,属于Adobe的Flash是基于ActionScript 3,这是完全执行了ECMAScript标准并且与本列表的其它语言一样具有重要作用。几年前,Adobe公开了一个名为“Flex”的工具,即尝试着将Flash发展成更加适合创造基于浏览器的用户界面和RIA内容,而不再只是针对于动画和游戏。尽管并不是Flash的替代品,但是Flex比前者更适合创造用户界面,因为它是带有丰富UI支持而不是只伴随着固定变成语言的动画工具的XML编程语言。基于最近的Flex版本,Adobe公开了一个名为AIR的产品,它能够从浏览器中分离Flash内容。使用AIR和一些新创造的对象(游戏邦注:致力于帮助Flash内容使用更多机器资源而不只是浏览器插件),你将能够从Flash中创造优秀的可执行内容,并运行于各种平台上。优点:Flash完整的绘制和编程工具让编写基于网页的游戏变得更加简单。尽管没有Visual Studio血统,Flash环境仍具有非常丰富的功能。缺点:尽管对于一个人来说是个很棒的环境,但是Flash却不能有效支持团队编程。尽管Flex编译器是免费的,但是FlexBuilder Flex内容创造工具却不是。与这一列表中的其它语言不同的是,ActionScript是针对于客户端的技术。尽管有些服务器端的ActionScript解释器可能会阻碍你学习单独的服务器语言,但事实上却不存在这样的情况。可移植性:Flash执行时间播放器可以允许于Windows,Mac,Linux多种手机以及一些游戏主机上。但并非所有设备都支持同样本本的Flash,所以你需要学习每周版本的能力,并在开始前决定好目标平台。是否适合新手:非常适合,特别是结合其绘制和动画工具。尽管容易在Flash环境中创造内容,但却不适用于其它语言。例如,C++使用的一种技巧或创造工具可能在Java中拥有等价内容,反之亦然。但是Flash的开发环境却与其它语言不同。资源:就像微软是能够满足你的所有.NET需求的万能商店一样,Adobe对于Flash也是这样的存在。Python与之前提到的语言不同的是,Python并不是始于一家大型公司或大学项目。它更接近于大学学生的基层工作,并且在之后变成产业中喜欢语言结构以及缺少就功能的人的选择。该语言本身非常紧凑且很容易使用。我们同样也能够轻松地将Python语言解释器整合到现有的项目中,这也是为何你会发现Python作为许多游戏的内涵脚本语言的原因。呈现了许多Java的服务器友好型属性的Python也是非常棒的服务器语言。实际上,Python编译器能够棉鞋Java VM和微软的CLR编译Python代码。你会发现许多服务器(游戏邦注:如YouTube,谷歌和雅虎)都使用了Python进行后端处理。基于用户支持的PyGame程序库,Python在游戏社区越来越受欢迎。PyGame是一个能够将已建立的SDL跨平台图像程序库抽象化为一些容易使用的Python内容的对象程序库。一些让人印象深刻的游戏都是使用Python进行编写。优点:是一种免费的开放源。专注于用户社区。能够完全整合到谷歌的AppEngine—-这是谷歌的“付费”处理服务器。缺点:事实上,几乎所有处理都不是经过一家大型公司而是通过其用户社区,所以这可能是为了让公司签订一个Python项目的强行推销方式,尽管一些巨头已经在Python做出了巨大投资,所以现在的Python不再像过去那样作为一种“业余语言”了。可移植性:非常好。大多数适合Python的第三方程序库都是围绕着像SDL和OpenGL等可移植技术进行创造,所以我们能够基于Python轻松编写一些可运行于任何平台的内容。是否适合新手:Python语言拥有能够轻松上手的语法并且很容易学医。此外,还存在一些很棒的社区编写教程。资源:Python.org拥有所有与Python相关的内容。这同样也是许多活跃社区论坛的集中营,在此你能够获得各种问题的答案。汇编语言关于汇编语言你必须了解两件事。语言的名字是“汇编”。将汇编语言转换成低级别的机器编码的工具名字是“汇编程序”。这是一个很常见的错误,甚至连有经验的程序员也会犯这样的错误,即将语言称为“汇编程序”。所以请先叫对它们彼此的名字。默认情况下,汇编语言是本文中最小且最快的语言。因为它并非高级语言,但却是你的CPU指令系统助记码代表,任何基于高级语言所编写的内容都能够快速用汇编语言呈现出来。鉴于以上事实,你可能会认为你的研究就此结束了。毕竟,如果一种语言是最小且最快的,又有什么不使用它的理由呢?实际上,为什么其他人会在你能够基于汇编语言编写代码并获得最佳结果的时候还费心去研究C或C++呢?那是因为“最佳代码”这一词并不是指代你的程序的原始速度和规模。存在可读性,就像你可能需要递交部分代码给同事让他能够基于这些内容完成自己的任务。存在可移植性,即你可能需要将代码移植到其它操作系统或硬件体系结构中。存在可维护性,即需要能在项目快结束时轻松解决问题。存在抽象性,即你可以基于向下移动角色而不是操控内存中的数字去编写代码。基于所有的这些元素,汇编语言绝对是最后一位。汇编语言很难读也难以维护。除非经过仔细评述,否则很少有人能够传承其代码。修改漏洞以及延伸现有的代码很复杂。你必须不断专注于可移植性,以防你最终编写出不能运行于来自同一制造商的不同处理器模型。实际上,汇编语言从未被用于完成游戏。汇编语言通常是作为程序的一部分将执行计算并会经过多次调用。有时候修改功能中的一些机器指令将帮助你创造一些额外且有价值的内容。但却不是在项目已开始便能够执行的过程。这是在早前测试所执行的,即在决定变成瓶颈到底出现在哪里时。汇编语言并非最热门的选择,如果你阅读了这篇文章并尝试着明确该选择怎样的语言,你便可能会转向其它语言。优点:如果你知道自己在做什么的话这可能会是最快且最有影响的方法。缺点:如果你正在阅读这一内容,你可能就不知道自己在做什么。所以请准备好花较长时间去学习无数能够推动处理器棒的技巧。可移植性:糟糕透顶。除非你正在面向基本处理器编写代码,否则你的程序可能不能运行于其它“可兼容的”处理器上。例如,AMD处理器上一些特殊的指令在Intel上便不可行,反之亦然。是否适合新手:一点都不。资源:如果你想要面向Intel处理器编写代码的话,面向基于Intel的计算机的汇编语言便是个很好的推荐。但如果不是的话,你应该着眼于目标CPU的制造商。服务器语言尽管上述提到的许多语言都能够有效作用于服务器上,但是它们所围绕的许多技术都较为陈旧,而现在也存在更容易使用的解决方法。关于为网页编写一个定制后端的最初标准是所谓的CGI,这是在服务器端运行一个定制的可执行文件的一个定制后端,将在网页上传输数据,并收集文本输出内容然后将其回传给用户。尽管这在服务器端很容易执行,但这却并未按照今天网页的使用方式去创建互动体验模型,最好的情况便是面向互动网页应用的CGI解决方法会很笨拙。PHPPHP是最早的网页“嵌入式”脚本语言之一,并且它将给予多种方式改变所编写的网页。尽管PHP可以作为一种脚本语言,基于网页形式获得输入内容,处理它并返回输出内容,但是其真正优势是在于作为超文本预处理器的作用。一旦被设置为服务器的预处理器,PHP便能够处理嵌入页面中的代码。所以比起编写一个独立代码,在一个页面上打出当前日期,你可以选择直接将PHP代码嵌入印有日期的网页中,如此代码将被最终文本所取代。PHP同样也能够添加本机命令程序库与强大的MySQL数据库进行交流,从而是保存和检索持久数据变得更简单。推动PHP瞬间倍受欢迎的另一点是价格。它是免费的,因此帮它基金了名为LAMP(Linux,Apache,MySQL和PHP)的服务器配置中。这4个技术的结合为刚起步或低预算的网页设计师提供了免费切容易使用,的强大网页设置。作为奖励,它还能够基于低成本的硬件而运行。这对于网页开发者并没有影响。在今天存在许多待执行的免费货低价PHP脚本,不管是简单的用户数据库还是完整的网站设置。ASP.NET不甘示弱的微软很快便基于微软的技术,也就是Windows,Internet Information Server(微软的网页服务器),CLR和SQL Server,组合了自己的PHP式的配置。尽管并不是免费的也不属于PHP联盟,ASP.NET却拥有所有技术支持费用能够买到的优势,且能够支持除PHP外的语言。如果你非常熟悉客户端的Visual Basic,你便能够基于ASP.NET在服务器端使用它。但如果你的预算非常有限,LAMP设置可能会是更好的选择。Ruby on Rails (通常简称为Rails)本身并不是一种编程语言,但却是伴随着Ruby编程语言的一个类程序库架构。尽管Ruby本身是一种不具有重大改革性的对象导向型脚本语言,同时集成了Python和Perl,但是其Rails程序库却创造了系统改革。Rails程序库完全整合了MVC(Model View Controller)范式并致力于防止技术的重复。这让你能够基于较小的代码创造一个相对丰富的服务器系统。Rails使用者将能够自豪地炫耀基于少量代码所编写的网页论坛和社交网站。与PHP一样,Ruby on Rails也是免费的。值得一提的其它语言上面全部是关于在游戏开发世界拥有自己一席之地的语言,不管是在客户端还是服务器端。也就是说大规模或受欢迎的游戏都是使用这些语言进行编写。但是仍有一些并非游戏一流语言,但却呈现了许多希望的有趣的技术存在。我们将会在未来的一些重要项目中看到这些语言的出现。JavaScript我们已经在关于Flash和ActionScript的部分中简要提及了JavaScript。JavaScript拥有与ActionScript同样的根源,这两种语言可以有效地组合在一起。JavaScript最早获得关注是因为作为编写网页脚本的语言,而今天它却是作为推动,延伸并说服网络浏览器按照你想要的方式去呈现网页内容的语言。如果你曾经因为为了适应页面内容而调整自身规格的网页而烦恼,你便可以选择JavaScript。但JavaScript的作用不只是解决让人烦恼的网页问题,它也成为了编写台式机上所有有趣但却无用的小工具的语言。此外,该语言非常完善,足以用于编写一款完整的游戏,如果是基于小工具框架的话,便能够在浏览器或单机中运行。还存在两个主要问题阻碍着JavaScript成为网页游戏中更受欢迎的语言。第一个问题便是,与Flash插件不同的是,JavaScript的解释器是依赖于浏览器制造者。尽管语言是基于非常完整的ECMA标准,但是浏览器所使用的JavaScript执行在语言功能和性能中却是不同的。因此我们很难编写一个能够运行于所有浏览器上的强大的JavaScript应用。第二个问题便是关于你的知识产权的保护。JavaScript并不是作为源代码进行编译,然后再由浏览器本身进行解释。尽管存在一些有效的工具能够向你的用户隐藏代码,但是你的游戏的源代码却从未能逃离你的浏览器的“查看源代码”指令。如果你并不想你的游戏被模仿/改变/偷走,你就应该仔细着眼于一些有效的安全性解决方法。DD是C,C++和Java的“非官方”子孙。这是Walter Bright(游戏邦注:作为PC上C和C++编译程序构造的先驱之一)脑力劳动的产物。随着不断发展的类程序库以及对于反向兼容性的需求所带来的各种压力,Bright决定从头开始创造某些内容,汲取C,C++和Java的最佳功能,同时舍弃任何不具有存在下去的正当理由的内容。结果便创造了一种比其前辈更紧凑且更容易学习的语言,且无需牺牲任何重要的功能或运行速度。D是当你将语言设计带离整体领域的产物。尽管D以简洁的名义舍弃了反向兼容性,但是它却拥有与C代码交流的有效方法,所以如果你拥有第三方程序库或一些你不愿意重新编写的C源代码,你便可以轻松地与之进行沟通。也就是说如果D能够获得更多支持,它便可能成为世界上最棒的语言。它只是还未拥有巨大的代码程序库,丰富的工具,以及其它语言的用户支持基础罢了。希望关于该语言的支持能够不断发展,并且它也能够获得更多关注,即使这还需要花费一些时间。结论一开始我便清楚在关于到底该使用怎样的语言,本文是不可能达到一个让人满意的结论。实际上,并不存在能够解决所有问题的单一解决方法。希望这一列表至少能够帮助你预留出2至3个不错的候选对象。而剩下的研究便取决于你自己。幸亏上述所提到的几乎每一个解决方法都拥有免费的执行过程,所以你可以尝试这些语言并选择最适合你自己项目的对象。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量5548点击量4060点击量3713点击量3659点击量3251点击量3244点击量3231点击量3195点击量3116
&2016 Chukong Technologies,Inc.
京公网安备89

我要回帖

更多关于 27岁了学什么编程语言 的文章

 

随机推荐