编程有很多乐趣。在分析问题,分解问题,制定解决方案,制定策略,从不同方向接近问题以及编写代码方面,都是乐于分享的。看到这个程序第一次运行是非常高兴的,然后更多的快乐在急于重新回到代码,使其更好,更快。
为了确保程序能够顺利并且可预测地运行,在搜寻错误方面也经常感到高兴。几乎没有什么场合像最终确定一个特别顽固的错误,并明确地将其剔除出去一样快乐。
甚至有一种喜悦,认为你采取的原始方法不是最好的。许多开发者发现他们在编写程序时学到了很多东西,包括有更好的方法构建代码。有时候,部分重写或者甚至是重写都会导致更好的应用,或者只是结构更连贯,更容易维护的应用。这个过程就像是站在自己的肩膀上,并且在获得这个观点和知识方面有很多乐趣。
但是,并不是编程的所有方面都非常高兴。其中一个不好的编程工作就是编写一个工作程序,并用完全不同的编程语言或移植工具重写。它到另一个完全不同的应用程序编程接口(API)的操作系统。
像这样的工作可以是一个真正的磨合。然而,这样的重写可能是非常必要的:一个应用程序iPhone上如此流行的应用可能会在Android设备上更受欢迎,而且只有一种方法可以找到。
但是,这里有个问题:当你正在浏览原始的源代码并把它移到新的平台上时,你是否保持相同的程序结构,以便两个版本并行存在?或者做你试图做出改进和增强?
当然,这种诱惑是完全重新考虑应用程序,使新版本更好。但是这两个版本越是分开,他们将来就越难维护。
因为这个原因,恐惧感将一个应用程序分解为两个。通过您编写的每一行代码,您都会意识到所有未来的维护工作,以及未来的所有修订和改进,都变成了两项工作,而不是一项。
这不是一个新问题。半个多世纪以来,开发人员一直渴望编写一个能在多台机器上运行的单一程序。这是高级语言的原因之一。首先发明的,这就是为什么“跨平台开发”的概念继续为程序员发挥如此强大的吸引力。
个人电脑行业近年来经历了巨大的转变。 台式计算机当然依然存在,对于需要键盘和大屏幕的任务,它们仍然是至关重要的:编程,写作,传播,数据跟踪。 但是现在大部分的个人计算都是在较小的设备上进行的,特别是对于快速信息,媒体消费和社交网络。 平板电脑和智能手机具有根本不同的基于触摸的用户交互模式,仅在必要时弹出键盘。
手机横屏
虽然移动市场有可能发生快速变化,但目前两大手机和平板电脑平台占主导地位:
-
iPhone和iPad的苹果系列,所有这些都运行iOS操作系统。
-
Google开发的基于Linux内核的Android操作系统,运行在各种手机和平板电脑上。
这两个巨头之间的世界是如何分割的呢,取决于它们是如何衡量的:目前使用的Android设备越来越多,而iPhone和iPad用户则更加投入,花更多时间在设备上。另外还有第三个移动开发平台,它不像iOS和Android那么受欢迎,但涉及到一个在个人电脑行业有着悠久历史的公司:
-
微软的Windows Phone和Windows 10 Mobile。
近年来,随着微软合并移动,平板电脑和桌面平台的API,这些平台已经成为一个更具吸引力的选择。 Windows 8.1和Windows Phone 8.1都基于一个名为Windows Runtime(或WinRT)的API,它基于Microsoft .NET。 这个单一的API意味着针对台式机,笔记本电脑,平板电脑和手机的应用程序可以共享他们的代码。
通用Windows平台(Universal Windows Platform,UWP)更为引人注目,它是构成Windows 10和Windows 10 Mobile的基础的Windows运行时版本。 一个单一的UWP应用程序可以从桌面到手机的每一个形式的因素。
对于软件开发人员来说,最佳策略是针对的不仅仅是这些平台之一。 但这并不容易。 有四大障碍:
问题1:不同的用户界面范例
所有这三个平台都采用了类似的方式,通过多点触摸来呈现图形用户界面(GUI)和与设备的交互,但细节上有很多不同。 每个平台都有不同的方式来浏览应用程序和页面,数据表示的不同约定,调用和显示菜单的不同方式,甚至不同的触摸方法。
用户习惯于与特定平台上的应用程序进行交互,并期望将这些知识用于未来的应用程序。 每个平台都获得了自己的相关文化,这些文化习俗影响了开发者。
问题2:不同的开发环境
今天的程序员习惯于在一个复杂的集成开发环境(IDE)中工作。所有这三种平台都存在这样的IDE,但它们当然是不同的:
-
对于iOS开发,Mac上的Xcode。
-
对于Android开发,Android Studio在各种平台上。
-
对于Windows开发,PC上的Visual Studio。
问题3:不同的编程接口
所有这三个平台都基于不同的操作系统和不同的API。在许多情况下,这三个平台都实现了类似类型的用户界面对象,但名称不同。
例如,所有三个平台都可以让用户切换一个布尔值:
-
在iPhone或iPad上,这是一个称为UISwitch的“视图”。
-
在Android设备上,它是一个名为Switch的“小部件”。
-
在Windows运行时API中,它是名为ToggleSwitch的“控件”。
当然,这些差异远远超出了编程接口本身的名称。
问题4:不同的编程语言
开发人员在为这三个平台选择编程语言方面有一定的灵活性,但总的来说,每个平台都与特定的编程语言紧密相关:
-
iPhone和iPad的Objective-C
-
Android设备的Java
-
C#for Windows
Objective-C,Java和C#都是C类的表亲,因为它们都是C的面向对象的后代,但是它们已经变成了相当远的表亲。
由于这些原因,一家想要瞄准多个平台的公司可能会很好地聘用三个不同的程序员团队,每个团队都熟练掌握并使用特定的语言和API。
这个语言问题特别讨厌,但是这个问题是最难解决的问题:如果你可以在这三个平台上使用相同的编程语言,那么你至少可以在这些平台之间共享一些代码。 这个共享代码很可能不会涉及到用户界面,因为每个平台都有不同的API,但很可能有应用程序代码完全不会触及用户界面。
这三种平台的单一语言肯定会很方便。 但那是什么语言?
阅读(2057) | 评论(0) | 转发(0) |