Skip to main content
Global

3.4: 软件创建

  • Page ID
    172272
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    我们刚刚讨论了不同类型的软件,现在可以问:软件是如何创建的? 如果软件是一组指令,告诉硬件该怎么做,那么这些指令是如何编写的? 如果计算机将所有内容读为一和零,我们是否必须学会用这种方式编写软件? 值得庆幸的是,还编写了另一种软件类型,特别供软件开发人员编写系统软件和应用程序——称为编程语言。 能编程的人被称为计算机程序员或软件开发人员。

    与人类语言类似,编程语言由关键字、注释、符号和语法规则组成,用于将语句构造为计算机可以理解的用于执行某些任务的有效指令。 使用这种语言,程序员编写一个程序(称为源代码)。 然后,另一个软件处理源代码,将编程语句转换为机器可读形式,即执行 CPU 所必需的 1 和 0。 这种转换过程通常被称为编译,该软件被称为编译器。 大多数情况下,编程是在编程环境中完成的;当你从微软购买Visual Studio的副本时;它为开发人员提供了编写源代码的编辑器、编译器以及许多微软编程语言的帮助。 当今知名的编程语言的示例包括 Java、PHP 和 C 的各种风格(Visual C、C++、C#)。

    Behaviorism_1.gif
    \(\PageIndex{1}\):将计算机程序转换为可执行文件。 Ly-Huong T. Pham 的图片已获得 CC-BY-NC 许可

    自 1883 年一位名叫 Ada Lovelace 的女性使用第一种编程语言以来,已经创建了数千种编程语言。 一种叫做 COBOL 的早期类似英语的语言自 20 世纪 50 年代至今一直在我们今天仍在使用的服务中使用,例如工资单、预订系统。 C 编程语言是在 20 世纪 70 年代引入的,至今仍是最受欢迎的选择。 一些新语言,例如 C# 、Swift 在蓬勃发展。 程序员为特定的操作系统平台选择与要解决的问题最匹配的语言。 例如,HTML 和 JavaScript 等语言用于开发网页。

    很难确定哪种语言最受欢迎,因为它各不相同。 但是,根据每月对编程语言受欢迎程度进行排名的公司之一 TIOBE Index 的数据,2020 年 8 月排名前五的公司是 C、Java、Python、C++ 和 C#(2020 年)。 有关此方法的更多信息,请访问 TIO BE定义页面对于那些想学习更多编程知识的人来说,Python 是很好的第一门学习语言,因为它不仅是用于 Web 开发的现代语言,而且易于学习,涵盖了许多适用于其他语言的编程基本概念。

    一个人可以写一些程序。 但是,大多数软件程序是由许多开发人员编写的。 例如,编写微软 Windows 或 Excel 需要数百名软件工程师。 为了确保团队能够以最少的错误(也称为错误)交付及时、高质量的软件,我们使用了正式的项目管理方法,我们将在第 10 章中讨论这个主题。

    开源软件与闭源软件

    当个人计算机首次发布时,计算机爱好者立即联合起来开发应用程序并解决问题。 这些计算机爱好者很乐意分享他们开发的任何程序以及他们发现的问题的解决方案;这种合作使他们能够更快地创新和解决问题。

    但是,随着软件开始成为一项业务,这种共享所有内容的想法对某些人来说已经失宠了。 当一个软件程序需要数百个小时来开发时,程序员不想把它泄露出去是可以理解的。 这导致了限制性软件许可的新商业模式,这种模式要求向所有者支付软件费用,这种模式至今仍占主导地位。 这种模型有时被称为封闭源代码,因为源代码仍然是私有财产,不能提供给其他人。 微软 Windows、Excel、苹果 iOS 就是封闭源软件的例子。

    但是,有许多人认为不应限制软件。 就像20世纪70年代的早期业余爱好者一样,他们认为,如果我们分享所学知识,创新和进步可以更快地实现。 20 世纪 90 年代,随着互联网接入连接越来越多的人,开源运动蓬勃发展。

    开源软件是任何人都可以复制和使用的源代码的软件。 对于非程序员来说,除非编译后的格式也可供用户使用,否则它没有多大用处。 但是,对于程序员来说,开源运动促成了一些世界上最常用的软件的开发,包括Firefox浏览器、Linux操作系统和Apache网络服务器。

    有些人担心,由于源代码可用,开源软件可能容易受到安全风险的影响。 其他人则反驳说,由于源代码是免费提供的,许多程序员为开源软件项目做出了贡献,从而减少了代码错误,增加了功能,修复错误的速度比闭源软件快得多。

    许多企业之所以对开源软件持谨慎态度,恰恰是因为该代码可供任何人查看。 他们认为这增加了攻击的风险。 其他人则反驳说,这种开放性降低了风险,因为代码暴露于成千上万的程序员面前,他们可以快速将代码更改纳入补丁漏洞。

    总而言之,开源模式的一些好处是:

    • 该软件是免费提供的。
    • 软件源代码可用;可以在安装之前对其进行检查和审查。
    • 大量从事开源项目的程序员社区可以快速修复错误并添加功能。

    闭源模型的一些好处是:

    • 为软件开发人员或公司提供经济激励
    • 开发该软件的公司提供的技术支持。

    如今,有成千上万的开源软件应用程序可供下载。 开源生产力软件的一个例子是 Open Office Suite。 搜索开源软件的一个好地方是s ourceforge.net,那里有成千上万的软件应用程序可供免费下载。

    软件许可

    公司或开发人员拥有他们创建的软件。 该软件受专利、版权或许可等法律保护。 软件所有者有责任通过许可条款授予其用户使用该软件的权利。

    对于闭源供应商而言,条款因用户愿意支付的价格而异。 示例包括单用户、单个安装、多用户、多安装、每个网络或计算机。

    它们具有特定的权限级别,供开源供应商使用源代码授予并设置修改后的版本条件。 例子包括免费分发、混音、改编用于非商业用途,但条件是新修订的源代码也必须按照相同的条款获得许可。 虽然开源供应商不是通过为软件收费来赚钱,但他们通过捐款或出售技术支持或相关服务来创收。 例如,维基百科是一个广受欢迎的在线免费内容百科全书,有数百万用户使用。 然而,它主要依靠捐款来维持其员工和基础设施。

    参考

    2020 年 8 月的 TIOBE 指数。 检索于 2020 年 9 月 4 日,来自 https://www.tiobe.com