图书前言

我认为,编写程序是一项最富有创造性的活动。如果学会了画画,则可以绘制出美妙的图画。如果学会了拉小提琴,则可以奏出美妙的音乐。但如果学会了编程,则可以创造全新的体验(如果你愿意,也可以绘制出炫酷的图画以及美妙的音乐)。一旦踏上了编程这条路,那么你可以到达的目的地是没有任何限制的。通常,所学到的编程技能总有用武之地。

你可以将本书视为开启编程之旅的第一步。一旦头脑中有了奋斗的目标,那么努力的过程将是美好的,学习编程亦是如此。因此,我更愿意将学习编程的目的描述为“有用性”。虽然在学完本书后,你可能并不会成为世界上最优秀的程序员,但至少具备正确编写有用程序所需的技能和知识。至少有一个你编写的程序会在Microsoft Store中供他人下载使用。

然而,在开始学习之前,我想先给出一个小小的警示。如果你打算进行一次探险之旅,那么一定可以找到一本指南告诉你可能会遇到的狮子、老虎以及鳄鱼,同样,我认为必须让你知道的是,我们的学习旅程不可能是一帆风顺的。程序员必须学会以不同方式来思考需要解决的问题,因为计算机的工作方式与我们人类的工作方式不一样。人类可以慢慢地完成一些复杂的事情,而计算机则可以非常快速地完成一些简单的事情。程序员的工作就是如何利用计算机的一些简单的功能来解决复杂的问题。而这恰恰也是我们将要学习的内容。

成为一名合格程序员的成功要素与努力成为其他职业人的成功要素是一样的。如果想要成为一位世界知名的小提琴演奏家,就必须进行大量的练习。对于编程来说也是如此。只有花费大量的时间来编写自己的程序,才能掌握代码的编写技巧。就像小提琴演奏家真正地喜欢乐器唱歌一样,让一台计算机完成你希望的工作是一个真正令人满意的体验。当看到其他人正在使用你编写的程序并认为该程序实用且好用时,你一定会感到非常愉快。

本书的组织结构

本书共分为四个部分。每一部分都是建立在前一部分的基础之上,从而引导读者逐步成为一名成功的程序员。首先,将学习程序告诉计算机完成工作所需的低级别编程指令,然后学习一些专业的软件实践。

第Ⅰ部分:编码基础

第Ⅰ部分是入门,主要介绍如何安装和使用所需的编程工具,以及C#编程语言的基本元素。

第Ⅱ部分:高级编程

第Ⅱ部分描述用来创建复杂应用程序所使用的C#编程语言的相关功能。该部分将介绍如何将大型程序分解成更小的元素,如何创建用来反映待解决具体问题的自定义数据类型。此外,还将学习当程序不使用某些数据时如何在存储中保存这些数据。

第Ⅲ部分:创建游戏

创建游戏是非常有趣的。同样,事实证明,它也是学习如何使用面向对象编程技术的一种非常好的方法。在该部分,将构建一些可玩的游戏,同时学习如何通过继承以及基于组件的软件设计扩展编程对象的基础知识。

第Ⅳ部分:创建应用程序

在第Ⅳ部分,将学习如何创建完全成熟的应用程序。你将学习如何设计图形化用户界面以及如何将程序代码与显示器上的元素连接起来。学习如何构建现代应用程序。

本书的学习方法

在每一章,都会介绍一些关于编程的相关内容。首先,我会演示如何完成某个操作,然后引导读者使用所学的内容完成一些自己的操作。读者所完成的内容不会超过一个页面。每一章都会使用到Snaps库,该库预先创建了部分功能(本书会介绍如何使用该库)。随后,由读者来完成其他一些操作!

如果愿意,可以直接通读本书。但如果放慢阅读速度,并在学习过程中完成一些实际操作,将会学到更多内容。实际上,本书并不完全是一本教你如何编程的书,任何一本关于自行车的书都不可能教会你如何骑自行车。你必须投入大量时间和实践来学习如何编程。在你尝试进行编程时,本书可以提供相关的知识和信心,此外,当所编写的程序无法按预期运行时,本书也会为你提供帮助。本书中的所有内容将帮助你学习如何编程,努力吧!

动手实践

当然,学习的最佳方法是实践,所以你会发现本书中包含许多“动手实践”部分。该部分提供了练习编程技能的方法。首先从一个示例开始,然后介绍一些可以自己尝试完成的步骤。你创建的所有程序都会在Windows PC、笔记本电脑或者手机上运行。甚至可以通过Windows Store将自己的创作成果发布到全世界。

代码分析

学习如何编程的一个好方法是研究其他人编写的代码,并弄清楚该代码完成的操作(有时还需要弄清楚为什么代码没有完成它应该完成的操作)。在本书的“代码分析”中,将使用演绎技巧来阐释一段程序的行为,讨论如何修复bug并提出一些改进建议。

易错点

如果你不知道程序失败的原因,那么在开始编写第一个程序之后将会很快学习到相关内容。为了帮助你提前处理相关问题,本书提供了“易错点”部分,其中预测了可能遇到的问题,并提供了相应的解决方案。例如,当介绍一些新知识时,有时我会花一些时间来考虑程序可能失败的原因以及当使用新功能时所担心的问题。

程序员要点

我曾经花费了大量时间教授如何进行编程。同时,还编写许多程序并向几个付费用户出售了一些程序。通过大量的实践,我学会了一些软件设计的方法,而这些方法我希望在你学习编程的过程中就可以掌握。“程序员要点”的目的是预先给你提供相关信息,以便你可以在学习软件开发的过程中从软件开发的专业角度思考问题。

“程序员要点”涵盖了许多问题,从编程到人再到哲学。我强烈建议你仔细阅读并吸收这些要点——在以后的工作中,这些要点可以为你节省大量时间!

程序和Snaps库

没有人会从头开始创建程序。所有软件都是通过使用已经构建的部分软件而构建的。如果一个程序想要显示文本,或者播放一些视频,那么只需要请求另一个程序完成相关操作即可。每种流行的计算机语言都由一个巨大的现有代码库所支持,程序员需要了解的其中一件事就是如何使用这些库以及其他人编写的软件。

我已经为本书专门创建了Snaps库。该库提供了一组易用且便于组合的功能行为。在你的第一个程序中就会用到Snaps库。本书的后面还会介绍其他可以用来构建程序的功能库。

使用了Snaps库的程序需要在Snaps引擎中运行,Snaps引擎是一个独立的环境,在该环境中,程序可以发出消息、从用户获取输入、绘制图像、发出声音,甚至可以知道天气的状况。

本书会提供相关的示例来说明Snaps库的工作原理,至于通过这些示例可以学习到什么,就由你去体会了。我们所遵循的原则是“如果你无法通过编程让你的朋友和家人留下深刻印象,那么该程序的意义是什么呢?”我真的希望你可以构建一些令人印象深刻的程序,甚至可以发布给其他人使用。

程序员要点

一切都建立在别人的代码之上

第一个程序员要点是,一名优秀的程序员可以“创造性地偷懒”,这看起来是非常合理的。如果可以使用已编写好的程序,就没有必要编写类似的程序。本书提供的Snaps库就是这样一个示例。本书的后面会介绍该库的一些内部代码,你会发现,它本身就使用了其他库。

软件和硬件

如果想要运行本书中的程序,需要一台计算机以及一些软件。我想我恐怕无法为你提供一台计算机,但在本章,你会找到在哪里可以获取Visual Studio 2015 Community Edition,可以使用这个免费的软件来创建自己的程序。此外,还会知道到哪里下载Snaps库以及用来学习和使用的演示代码。

计算机必须运行Windows 10操作系统的64位版本,此外,还要满足以下需求:

● 1GHz或者更快的处理器,最好是Intel i5或更高版本。

● 至少4GB的RAM,但最好是8GB或以上。

● 完整的Visual Studio 2015 Community安装需要占用8GB的磁盘空间。

对于图形显示器没有具体的要求,但是当编写代码时,高分辨率的屏幕可能让你看到更多内容。Snaps库可以使用触摸屏、鼠标、笔输入设备以及Xbox One和Xbox 360控制器(针对第Ⅲ部分开发的游戏)。

Visual Studio 2015 Community Edition是一款免费的应用程序,可用来在Windows 10 PC上创建C#程序。如果你的计算机上只安装了Visual Studio的更早版本(比如Visual Studio 2013),那么恐怕无法使用该版本来完成书中的程序。然而,Visual Studio的2015版本可以与现有的安装一起使用。在第1章,我会提供一个链接来详细指导如何安装和运行Visual Studio。但为了更好地使用Visual Studio,你最好拥有一个Microsoft账号,以便为你分配一个开发许可证。

下载

在本书的每一章,我都会演示并解释一些程序,从而教你如何开始编程——当然,你也可以使用程序来创建自己的程序。可以下载Snaps库、书中的示例代码、Visual Studio的安装和设置说明(请从以下页面下载):

https://aka.ms/BeginCodeCSharp/downloads

按照第1章以及安装文档的说明就可以成功安装示例程序和代码。也可扫描封底的二维码获取下载资源。

致谢

我真的非常喜欢撰写图书。首先,非常感谢Microsoft Press的Devon Musgrave和其他工作人员,感谢他们给予我撰写本书的机会,其次感谢Rob Nance所提供的美妙艺术品以及John Pierce和Lance McCarthy在文本方面所完成的奇妙工作。事实证明,他们所给予的帮助是非常重要的,正是由于他们的帮助,才确保了本书的所有内容尽量正确无误。

勘误表、更新和图书支持

我们已经尽最大的努力来确保本书及其相关内容的正确性。可以通过以下页面访问本书的更新——其形式为勘误表以及相关修改的列表:

如果你发现了未包含在该列表中的错误,请通过相同的页面将该错误提交给我们。

如果需要额外的支持,请发送电子邮件到Microsoft Press Book Support(mspinput@ microsoft.com)。

注意,上面的地址并不会提供Microsoft软件和硬件的产品支持。如果想要得到Microsoft软件或硬件的帮助,请访问http://support.microsoft.com。

我们想要聆听你的想法

对于Microsoft Press来说,你的满意是我们的重中之重,而你的反馈则是我们最大的财富。请告诉我们你关于本书的想法:

http://aka.ms/tellpress

我们知道你肯定非常忙,所以只提供了几个简短的小问题。你的答案会直接发送给Microsoft Press的编辑们(并不需要提供任何个人信息)。在此先对你表示感谢!

保持联系

让我们在Twitter上保持联系:http://twitter.com/MicrosoftPress。