计算机信息系统/程序开发简介
过程式编程或多或少是不言自明的,它是过程式的,因此它将一步一步地解决问题。这是一种更古老的编程语言类型,现在已被面向对象编程所淘汰。然而,这种类型的编程非常重要,如果您想了解编程的概念以及所有涉及的内容,则应该充分了解它。这个过程在某些情况下也称为命令式编程,意思是自上而下的语言;这就是编程函数的工作方式,从一个自上而下的过程顺序。这使得这个过程在某种程度上不言自明,因为为了使某些东西工作并传递信息,我们假设它按照这种顺序进行。除了逐步解决问题之外,还必须将指令列表发送到计算机,以便它知道如何处理这些信息。它依赖于包含需要执行的多个步骤的例程或过程。过程式编程由于其简单性而成为其他类型编程的垫脚石。它是一种更古老的编程类型,现在已被另一种流行的形式所淘汰,即面向对象编程。[1] 面向对象编程更关注对象以创建程序,而不是特定的步骤。一个对象,比如一个人,应该有一个名字,或者能够行走,这在面向对象编程中可以看作是一种方法。在该编程中拥有方法就像在过程式编程中拥有过程一样。[2] 最流行的面向对象编程语言之一是 Java,[3] 它几乎在所有地方使用。面向对象程序中的对象包含属性。如果你玩过 D&D[4],你就会知道你的角色有不同的属性来定义他们。如果你有一个对象,你可以改变它的属性,比如大小、形状和颜色。
面向方面编程是一种编程形式,它通过允许开发人员以一种能够满足新要求的方式修改 OOP 来补充面向对象编程 (或 OOP)。它保留了最初在 OOP 中开发的模型,但允许使用新的语法,而无需更改所使用的编译器或重新配置编辑器。本质上,它是之前开发的 OOP 样式的补充,并允许应用程序在其生命周期内采用新的特征,而无需完全改造或重新开发。这种使应用程序能够适应当前技术趋势的能力延长了应用程序的有用性和寿命,从而也使使用该应用程序的用户受益。[5]
自适应软件开发包括循环推测、协作和学习,而不是更传统的线性规划、构建和实施方法。首先,使用术语“推测”,因为结果永远无法完全预测到规划的程度,因为在没有任何有组织的方法的情况下漫无目的地游荡是浪费时间。使命仍然定义了;它承认使命永远不可能包含所有可能的结果,并且可能需要改变。其次,术语“协作”表明,根据该模型,管理并不完全关注“管理做事”——即委派指示并确保它们得到遵循,而是关注培养和维护协作环境,这是实现真正增长所必需的。这可能很困难,因为根据该模型,环境通常处于混乱的边缘,因为项目无法完全结构化,因为那样就不会出现任何新事物。但是,事情不能摇摇欲坠地进入无政府状态。最后,重点是开发人员和消费者从错误中吸取教训。这三个阶段的周期很短,因此吸取教训的是小的错误,而不是大的错误。[6]
以下是程序开发生命周期的六个步骤
1. 分析问题。计算机用户必须弄清楚问题,然后决定如何解决问题 - 选择程序。
2. 设计程序。流程图在 PDLC 的这一步中很重要。这是一个包含程序流程的视觉图表。此步骤将帮助您分解问题。
3. 编写程序。这是使用编程语言编写代码行。代码称为列表或源代码。计算机用户将运行一个对象代码来完成此步骤。
4. 调试程序。计算机用户必须调试。这是查找计算机上“错误”的过程。查找错误很重要,因为这被称为程序中的错误。
5. 正式化解决方案。必须运行该程序以确保没有语法和逻辑错误。语法是语法错误,逻辑错误是结果错误。
6. 文档和维护程序。此步骤是将所有内容收集在一起的最后一步。内部文档涉及此步骤,因为它解释了更改程序的原因或如何编写程序。[7]
计算机代码是一系列语句,这些语句已由更高级别的语言(通常称为源代码)分配了功能。这种语言类似于英语,并已使用称为编译器的程序类型转换为机器语言。由于代码用于指示计算机执行各种任务,因此存在许多不同类型的语言和程序。编码最重要的方面之一是决定计算机将执行哪些作业(创建网页、编写游戏等)。无论选择什么,大多数代码都使用纯文本,因为其兼容性。尽管实际内容是按这种方式编写的,但每个文档都分配了一个唯一的扩展名,指示其类型。可以使用基本的文字处理器或文本编辑器编写简单的代码。但是,使用软件应用程序(专门为某种语言的编码而设计)的效率和有效性要高得多。与用英语编写的文档一样,使用文字处理软件来帮助检测拼写错误和非标准语法,代码编辑器提供可比的工具来确保准确性。代码编辑器也称为集成开发环境 (IDE),这是一种用于格式化的软件应用程序。使用代码编辑器可以减少代码中的错误数量和阅读代码所花费的时间。使用 IDE 的一个主要缺点是缺乏灵活性。虽然有些 IDE 支持多种编程语言,但相当一部分 IDE 仅针对一种语言。 [8]
流程图和伪代码
[edit | edit source]在程序开发生命周期的设计过程中,程序员(以及非程序员)能够可视化程序的工作方式非常重要。流程图和伪代码等某些工具用于简化设计过程,并允许开发人员在实际使用任何代码之前查看程序。一种常见的程序设计工具是流程图。流程图可以是手写的,也可以使用 Visual Logic 或 Flowgorithm 等软件创建。使用软件可以帮助您以数字方式保存您的工作,这可能更可靠。[9] 许多这些软件程序都使用类似的符号来表示某些操作,例如输入、输出、赋值和各种类型的循环。例如,菱形表示输入和输出,矩形表示过程。流程图在教育工具中也很有用,因为它们更侧重于编程的概念,而不是编程语言的语法。另一种程序设计工具是伪代码。伪代码与编程语言非常相似,只是它使用非语义词来总结程序的过程。伪代码无法编译或执行,但它确实为程序员提供了一个良好的起点。[10] 以下是一个伪代码示例
- 如果用户的年龄大于或等于 18 岁
- 打印“您有投票权”
- 否则 打印“您无权投票”
编译器
[edit | edit source]编译器是一种特殊的程序,它处理用特定编程语言编写的语句,并将它们转换为计算机处理器使用的机器语言或“代码”。在执行(运行)时,编译器首先以语法方式逐个解析(或分析)所有语言语句,然后在一个或多个后续阶段或“遍”中构建输出代码,确保引用其他语句的语句在最终代码中正确引用。编译器与有时被称为 3GL(FORTRAN、BASIC、COBOL、C 等)和更高级语言的语言一起工作。[11] 除了单遍和多遍编译器外,还有即时编译器、分阶段编译器和源到源编译器。编译器前端分析源代码以构建程序的内部表示,称为中间表示。编译器后端包括三个主要阶段,例如分析、优化和代码生成。[12] 由于编译器将源代码转换为目标代码,而目标代码对于每种类型的计算机都是唯一的,因此针对同一语言提供了许多编译器。例如,有一个用于 PC 的 FORTRAN 编译器和另一个用于 Apple Macintosh 计算机的编译器。此外,编译器行业竞争激烈,因此每种类型的计算机上实际上都有针对每种语言的许多编译器。十多家公司为 PC 开发和销售编译器。[13] 还有一种称为反编译器的工具,它将低级语言翻译成高级语言。[14]
程序开发生命周期 - 调试和测试、实施和维护
[edit | edit source]控制结构
[edit | edit source]控制结构是用于显示程序或模块中如何执行函数、语句和指令的图表。该图表准确地显示了何时执行指令以及如何执行指令。最重要的是,控制结构显示了指令的顺序。[15] 有三种基本类型的控制结构:顺序、选择和重复。选择特定控制结构取决于您希望程序或模块完成什么。顺序控制结构是最简单也是最不复杂的控制结构。顺序控制结构是一条接一条执行的指令。[16] 该结构可以与遵循食谱进行比较。更复杂的控制结构可能是选择控制结构,它涉及条件或决策。这意味着该结构可以允许执行不同的指令集,具体取决于条件为真还是假。[17] 最后一个基本控制结构是重复控制结构,有时称为迭代控制结构。当需要重复一组代码时使用此控制结构。代码将重复执行,直到达到某个条件。当需要循环以达到特定结果时,使用重复控制结构。[18]
测试程序设计
[edit | edit source]良好的程序设计需要具体化。程序设计非常重要,尤其是在它涉及关于程序的总体逐步方向时。程序员必须测试程序设计,以确保它能够正确运行并且没有错误。程序员必须完成此任务的操作称为桌面检查。桌面检查允许程序员逐步执行程序设计。本质上,程序员逐步执行代码行以识别潜在错误并检查逻辑。程序员使用跟踪表来跟踪任何循环计数器。检查程序设计的目标是避免在程序开发周期中遇到更多错误。在开发周期中越早发现错误越好。如果直到开发周期的后期才发现错误,它可能会延迟项目。因此,程序员必须确保在桌面检查时严格注意。桌面检查的优点包括方便地手动“校对”程序员自己的代码。程序员自己编写了代码,因此他们能够立即使用熟悉的代码是一个优势。桌面检查系统的缺点包括潜在的人为错误。由于计算机没有检查设计代码,因此容易出现人为错误。[19]
调试
[edit | edit source]调试基本上是为了确保程序没有任何错误(错误),以便它能够正常运行而不会出现任何问题。调试是程序员的一项重要工作。调试的第一步是在您实际调试程序之前完成;程序需要转换为机器语言,以便计算机能够读取它。它使用语言转换器进行转换。调试的首要目标是消除语法错误以及阻止程序运行的任何错误。阻止程序运行的错误是编译器错误。这些错误需要立即消除,否则您将无法测试程序的任何其他部分。[20] 当程序员没有遵循编程语言的正确规则时,就会发生语法错误。另一种错误是运行时错误,它在程序运行时发生,并且在更正所有语法错误之后才被注意到。许多运行时错误是由于逻辑错误造成的,逻辑错误是程序逻辑中的错误。它可能发生在公式写错或使用错误的变量名时。[21]
有不同的调试技术可以使用。一种称为打印调试,也称为 printf 方法,通过观察打印(或跟踪)语句的实时或录制情况来查找错误,以查看过程的执行流程。此方法起源于 BASIC 编程语言的早期版本。远程调试是使用远程系统或网络查找错误的方法,并使用该不同系统运行程序并收集信息以查找代码中的错误。如果程序已经崩溃,那么可以通过各种跟踪技术以及分析程序的内存转储来使用事后调试。另一种技术是由爱德华·高斯创建的“栅栏调试”。基本上,此方法通过连续分割或分段来找到错误,直到找到错误。类似于此的是“挤压”技术,它使用故障测试的逐步内联来隔离问题。[22]
使用调试软件提供的工具可以调试程序。通常,尤其是在高级编程语言中,特定调试工具已包含在内。拥有特定于语言的调试工具可以更容易地检测代码中的错误,因为它们可以查找已知错误,而不是手动“逐行”检查代码。还需要注意的是,手动修复一个错误可能会导致另一个错误;这也是特定于语言的调试工具有用的原因。嵌入式系统也有调试软件。[23]
测试/实施与维护
[edit | edit source]在程序可以投入使用之前,需要做很多事情。其中一项是测试程序。在调试过程完成后,需要另一位程序员测试程序,以检查程序背景中可能出现的任何额外错误。这个人需要执行实际程序用户将使用并遵循的所有任务。为了确保隐私权,在测试过程中使用测试数据。但是,这仍然与实际数据具有相同的结构和感觉。测试人员还需要检查可能的输入错误,因为如果在将来没有检查,这将导致许多问题。公司通常会实施不同类型的测试。首先进行Alpha测试[24],该测试在公司内部进行,而Beta测试则发送到不同的州或国家,以确保程序100%可以使用。Alpha测试在Beta测试之前进行。一旦调试和测试完成,程序现在就在系统中,程序实现和维护阶段也已完成。为了防止将来出现错误,仍然需要进行程序维护。这对组织来说是最昂贵的,因为程序员需要不断改进和修复程序中的问题。
如前所述,程序在发布给公众使用之前会经过广泛的测试。两种测试类型称为Alpha测试和Beta测试。首先,重要的是要知道每个测试的作用。Alpha测试是在“内部”完成的。它是在向Beta测试发送之前在公司内部完成的,其在早期阶段的目的是尽可能改进产品,使其准备好进行Beta测试。Beta测试是在“外部”完成的,它让真正的客户有机会尝试该程序,其目的是在程序完全发布之前捕获任何错误。Alpha测试是耗时最长的阶段,有时比Beta测试长三到五倍。但是,假设没有发现重大错误,Beta测试可以在几周到一个月内完成。Alpha测试通常由工程师或公司的其他员工执行,而Beta测试则在“现实世界”中进行,临时发布给公众,以获得最广泛的反馈。在Alpha测试期间,通常会检测到大量的错误以及缺少的功能。在Beta测试期间,这些问题应该大幅减少。当Alpha阶段的测试结束后,公司会对产品性能有一个很好的了解。Beta测试完成后,公司会对客户的感受以及他们在测试过程中遇到的情况有一个很好的了解。如果两个阶段都进展顺利,产品就可以发布,供公众享受。为了让世界享受和使用如今电脑上的众多程序,所付出的时间和努力往往被忽视。此类信息让用户对电脑和电脑程序有了新的认识。[25]
程序开发工具
[edit | edit source]应用程序生命周期管理(ALM)工具
[edit | edit source]ALM(应用程序生命周期管理)是管理应用程序在其整个生命周期中的工具。它们对于承受越来越大压力的程序员来说非常有用,因为他们需要快速开发新程序。它们的帮助来自ALM工具可以提供的广泛功能。一个例子是许多ALM程序如何附带内置的程序设计工具,以及从完成的设计生成程序代码以创建应用程序的能力。这种代码生成能力为公司节省了时间和金钱,这些时间和金钱不必用于外包,尤其是在他们的编程人员很少的情况下。除了代码生成器之外,ALM程序中包含的另一个重要工具是“需求管理”。本质上,需求管理是按照这种方式定义的,指的是在开发程序的过程中跟踪和管理程序需求,因为它们被定义,然后被修改。公司越大,他们可以购买的ALM工具集就越好;市场上有许多ALM工具集可供选择。[26]
应用程序生成器
[edit | edit source]应用程序生成器是极其有用的设备。它们可以被业余爱好者/经验不足的人员或专业人士使用。应用程序生成器的目的是使任务比以前更简单。即使它只是更改一些基本的格式化特性,这些生成器也可以使用户只需输入一个特定的键或命令,就可以执行所有操作,一次性完成,从而节省大量精力。这些有用的生成器之一称为宏。宏是一个应用程序生成器,它可以简单地使在单个命令下即时执行重复操作成为可能。这样做的目的是使重新格式化或计算事物变得更容易,从而节省操作员的时间。[27]大多数Microsoft程序都包含一个宏记录器,允许用户轻松地记录他们使用过的所有输入和命令,并将它们与键盘快捷键关联起来,以便将来重复使用。其他应用程序生成器创建报告和表单,使会员资格、记录(如医疗处理、历史和疫苗接种)以及保险索赔等内容更有条理,更容易获取。
RIA工具
[edit | edit source]其他类型的工具包括设备软件开发工具、软件开发工具包(SDK)、应用程序编程接口(API)和富互联网应用程序工具(RIA)。富互联网应用程序提供了与桌面应用程序相关的许多相同功能。它们比其他基于 Web 的应用程序更具交互性和吸引力。该领域的知名公司包括微软、Adobe 和 JavaScript。微软实际上有一个非常完善的开发者网站,详细介绍了如何创建此类应用程序。它包括一些信息,例如在开始创建 RIA 之前需要考虑的事项,例如受众。[28]RIA 的一些关键功能包括直接交互、部分页面更新、更好的反馈、一致的外观和感觉、离线使用和性能影响。[29]直接交互允许使用更广泛的控件,例如编辑或拖放工具。部分页面更新允许实时流传输,并减少等待服务器响应的加载时间。由于部分页面更新,RIA 可以为用户提供更快的反馈。此外,有时可以在没有连接的情况下离线使用 RIA。RIA 的一个缺点是,小型设备(如手机)通常没有运行此类应用程序所需的必要资源。为了保持安全,大多数 RIA 在桌面的隔离范围内处理其应用程序,称为沙箱。沙箱限制了对操作系统的访问和可见性,以及对应用程序服务器的访问和可见性。
AngularJS
[edit | edit source]AngularJS(通常称为“Angular.js”或“AngularJS 1.X”)是一个基于 JavaScript 的开源前端 Web 应用程序框架,主要由 Google 维护,并由个人和企业社区维护,以解决开发单页面应用程序中遇到的许多挑战。JavaScript 组件补充了 Apache Cordova,这是一个用于开发跨平台移动应用程序的框架。[30]根据 JavaScript 分析服务 Libscore,AngularJS 被 Wolfram Alpha、NBC、Walgreens、英特尔、Sprint、ABC 新闻等网站以及 2016 年 10 月测试的 100 万个网站中的约 12,000 个网站使用。AngularJS 是 GitHub 上有史以来排名第 10 的最受欢迎的项目。[31]AngularJS 建立在这样的信念之上:声明式编程应该用于创建用户界面和连接软件组件,而命令式编程更适合定义应用程序的业务逻辑。该框架调整和扩展了传统 HTML,通过双向数据绑定呈现动态内容,双向数据绑定允许模型和视图自动同步。因此,AngularJS 弱化了显式 DOM 操作,旨在提高可测试性和性能。[32]AngularJS 双向数据绑定是其最显着的功能,在很大程度上减轻了服务器后端的模板责任。相反,模板根据模型中定义的范围内的數據以纯 HTML 渲染。Angular 中的 $scope 服务检测模型部分的更改,并通过控制器修改视图中的 HTML 表达式。同样,对视图的任何更改都会反映在模型中。这避免了主动操作 DOM 的需要,并鼓励 Web 应用程序的引导和快速原型设计。AngularJS 通过将当前值与之前存储的值进行比较来检测模型中的更改,这与 Ember.js 和 Backbone.js 不同,后者在模型值更改时触发侦听器。[33]
Node.js
[edit | edit source]Node.js 是一个开源的跨平台 JavaScript 运行时环境,用于在服务器端执行 JavaScript 代码。[34]Node.js 使 JavaScript 可用于服务器端脚本,并运行脚本以在页面发送到用户 Web 浏览器之前生成动态网页内容。服务器端脚本是一种设计网站的方法,以便在原始服务器上运行进程或用户请求。[35]Node.js 用于快速高效地发送消息、包和文件。JavaScript 以没有线程的概念而闻名——这意味着 JavaScript 的线程具有不同的进程组件。这个进程是没有任何浏览器的 JavaScript。[36]公司正在转向 Node.js 来创建应用程序,因为它
- 易于学习
- 允许在构建应用程序方面自由发挥
- 能够创建前端和后端语言
- 活跃的社区
[37]Node.js 提供了一个灵活且快速的开发过程,简单易用!
编程语言
[edit | edit source]什么是编程语言?
[edit | edit source]编程语言旨在与计算机通信指令,以便计算机可以解释这些指令并理解它们。它们用于创建程序来控制机器的行为和算法。有多种语言被创建到该程序中,这些语言是从不同的风格或形式创建的。编程语言的描述被认为是分为语法(形式)和语义(含义)这两个组成部分。语法是语言呈现的形式,语义是指令的实际含义或意义。编写程序是为了让计算机理解,以便计算机可以解释这些指令,将其翻译成计算机最终可以理解的指令。因此,当您在计算机启动后打开计算机时,它会解释这些指令,测试内存并重置所有连接的设备,并从硬盘加载操作系统。计算机执行的每个操作都有指令,这些指令需要有人将其翻译成编程语言。每种语言都需要创建、编译和测试,这往往是一项漫长而复杂的任务。[38]
编程语言的类别
[edit | edit source]编程语言可以归为两类:过程式(使用过程式方法的程序)和面向对象(对于使用面向对象方法的程序)。然而,对编程语言进行分类最常见的方法可能是将其归类为分层结构。编程语言可以归为低级语言、高级语言和超高级语言。低级语言由第一代语言、机器语言和第二代语言、汇编语言组成,是在非常低的级别上编写的:编程由 0 和 1 组成,机器语言,汇编语言包括一些 0 和 1 的名称和符号。这些语言允许计算机硬件快速读取命令,但代价是与高级语言相比,学习曲线要陡峭得多。[39]另一方面,高级语言更容易使用,因为它们更接近自然语言。它们也是机器无关的:在一台计算机上编写的程序可以在另一台计算机上无须修改地传输。这与低级程序的机器依赖性形成对比,在低级程序中,需要进行修改。最后,超高级语言,也称为第四代编程语言,很难与高级语言区分。第四代语言(4GL)被称为声明式语言,它没有指定计算机应该如何处理命令。这导致程序员使用很少的代码。尽管如此,过去被认为是超高级语言的语言(例如 Visual Basic、Python、Perl)现在被简单地称为高级语言。[40]
有一些高级编程语言是可视化编程语言或图形化编程语言。它们被称为这些名称是因为它们具有图形界面。在这些程序中,用户无需键入程序代码,而是可以拖放对象以生成所需的代码。甚至有一些程序结合了可视化元素来帮助编码,但仍然需要实际编码。这些类型的程序被称为可视化编程环境 (VPE)。Visual Basic 是最早使用可视化编程环境的编程语言之一。可视化编程环境的便利之处在于您可以拖放对象,但如果键入代码,程序会通过列出选项来帮助创建代码。这些帮助用户学习适当的代码。可视化编程环境的在线定义将其描述为允许在编程过程中使用可视化表达式(例如图形、绘图和动画或图标)的软件。这些可视化项目然后用作文本编程语言的图形界面。这些类型的可视化编程语言软件也用于教育目的,将来可能会成为最常见的编程语言。Scratch 是面向儿童的教育可视化编程环境的一个示例。如上所述,Visual Basic 是最早使用可视化编程环境的编程语言之一,但此后,C++、Pascal 和 Java 也开始创建可视化编程环境。[41]
常见的编程语言
[edit | edit source]有许多编程语言,直到今天,仍然在日常生活中被大量使用。Fortran 是一种更古老的选择,主要用于科学领域,供科学家、数学家和制定数值公式使用。Cobol 是另一种当今广泛使用的编程语言,通常可以在企业环境中用于日常交易。这种语言被认为非常耗时,如今越来越多的企业开始放弃这种语言,转向更快的流程。Pascal 是另一种在数学和科学程序中常用的语言。Pascal 编程语言以著名数学家 Blaise Pascal 的名字命名。它是由国际信息处理联合会工作组成员 Niklaus Wirth 创建的。他创建了 Pascal 编程语言,因为他想要加入过去编程语言没有提供的功能。它最初被设计为一种教学工具,并在其软件中使用控制结构。控制结构的使用使编程语言与其他语言相比变得更加结构化和组织化,这就是它被用作教学工具的原因。Pascal 于 1971 年发布,并于 1973 年进行了修订,这使它能够从 20 世纪 70 年代一直流行到 20 世纪 80 年代末。Pascal 的一项新功能是新的数据类型,例如 Integer、Real、Character 和 Boolean。这些新类型使 Pascal 成为一种在数学程序中得到强大应用的编程语言。另一项新功能是强大的数据类型元素,它允许 Pascal 编译器识别和纠正不同类型变量之间不兼容的赋值。这进一步有助于保持 Pascal 的组织结构,并使它能够在大学课程中得到更多应用。Pascal 是编程语言世界的一项伟大创举。[42]
另一种常见的编程语言是 Basic。由于其用户友好性,它是使用最广泛的语言之一。它被设计为一种简单且无压力的语言,通常用于交互式程序。它非常容易上手,许多人喜欢它简单易懂的功能。Basic 的一个方面是 Visual Basic,它同样使用易于理解的语言,但侧重于视觉辅助。这些只是众多复杂编程语言中的一部分例子。尽管其中许多语言在今天仍然使用,但很明显,一些更古老、更耗时的软件正在走向淘汰。[43]
另一方面,也有一些如今不再被广泛使用的编程语言。其中包括 LISP 和 Prolog。LISP(LISt Processing)于 1958 年被指定,是仅次于 Fortran 的第二古老的高级编程语言。它允许代码以与语言中的数据结构相同的形式表达,这在执行遗传算法或符号操作时非常有用。另一方面,Prolog 在 20 世纪 70 年代初被设计用于自然语言处理和逻辑推理。这种语言允许使用类似的语法将逻辑表示翻译回语言。[44] 另一种用于教孩子编程的语言是 Logo 编程语言,它是 LISP 的一种方言。为了作为一个学习工具,它的特点包括模块化、可扩展性、交互性和灵活性。另一种如今不再使用的第三代编程语言是 PL/I,“编程语言 1”。这门语言是作为 Cobol(大型商业应用)和 Fortran(科学和算法应用)的替代品开发的。最后,也是最重要的,是第一个面向对象的编程语言之一:SmallTalk。由于现在不再存在名为 SmallTalk 的语言,其他不同的语言如 SmallTalk-xx(xx 代表语言最终确定的年份)逐渐取代了它。因此,尽管 C、Java 或 PHP 等新语言现在已经占据主导地位,但旧的编程语言仍然在向新技术转变的过程中发挥着重要作用。[45]
C++ 是一种通用编程语言。它具有命令式、面向对象和泛型编程功能,同时还提供低级内存操作的功能。它被设计为偏向系统编程以及嵌入式、资源受限和大型系统,性能、效率和灵活性的使用是其设计亮点。C++ 在许多其他情况下也被证明很有用,其主要优势在于软件基础设施和资源受限的应用,包括桌面应用程序、服务器(例如电子商务、网络搜索或 SQL 服务器)和性能关键的应用(例如电话交换机或太空探测器)。C++ 是一种编译语言,在许多平台上都有它的实现。许多供应商提供 C++ 编译器,包括自由软件基金会、微软、英特尔和 IBM。许多其他编程语言都受到 C++ 的影响,包括 C#、D、Java 和更新版本的 C。[46]
Python 是一种开源的动态面向对象编程语言。Python 可用于开发各种应用程序,包括游戏、数据库和 Web 应用程序。它是一种免费提供的编程语言,几乎可以在任何计算机上运行,无需更改程序。Python 的兼容性是它每天被 Google 搜索引擎、Youtube、NASA 和纽约证券交易所使用的理由。此外,由于其可读性、易于获取和可扩展性,Python 最近被麻省理工学院选中,用于学习编程的学生。[47] 另一种开源面向对象编程语言,通常与 Python 相比,是 Ruby。Ruby 可用于创建 Web 应用程序和 Linux、Mac OS X 和 Microsoft Windows 计算机上的通用编程。与 Python 相似,Ruby 使用一种语法,该语法相对容易阅读和编写。然而,不同的是,Ruby 往往会假设程序员的意图,而 Python 的信息通常在语法中是直白的。Ruby on Rails (RoR) 是一个用于开发用 Ruby 编程语言编写的动态 Web 应用程序的框架。RoR 应用程序可以在各种类型的 Web 服务器上运行,并使用各种数据库,因此其使用和普及率迅速增长。
Java
[edit | edit source]Java 是另一种非常常见的编程语言。Java 是一种高级的面向对象编程语言,旨在让开发人员“一次编写,随处运行”。这意味着编码不需要为各种平台重新编译,并且可以在任何系统上运行。该语言由 Sun Microsystems 于 1995 年开发,并于 2007 年作为开源软件发布给公众。[48] Sun Microsystems 后来被 Oracle 收购。Java 的大部分语法都基于其他编程语言,如 C 和 C++。Java 程序被编译成字节码格式,可以在运行 Java 虚拟机的任何计算机上运行,无论计算机的体系结构多么简单或复杂。Java 在计算机和移动设备上的应用程序中被广泛使用。它深受应用程序开发人员的喜爱,因为它易于使用,并且与大多数设备兼容,因为大多数设备都能读取 Java。Java 语言的一个流行应用程序是 Java applet,它是一种可以插入启用 Java 的 Web 浏览器的网页中的小程序。这些 applet 可用于在浏览器内部运行游戏、横幅广告、滚动文本或各种其他类型的程序。这些 applet 就像添加图像一样插入网页的 HTML 语句中。当显示 applet 时,它会从网页的主机服务器下载,允许程序在查看者的计算机上运行。[49] 移动设备在其许多系统中都使用 Java,因为它紧凑,并且可以用于设备中的许多操作。Android 使用 Java 作为其移动操作系统的主要组成部分。虽然不是操作系统的基础,但 Java 用于大多数非基本功能。在手机市场方面,Java 的最大竞争对手是 Google,因为它们正在推广自己的操作系统,用于移动设备。Java 存在于大多数开发的应用程序中,但被编程为从头开始创建简单的程序。与任何编程语言一样,Java 的主要缺点是它可能会暴露可被黑客攻击的弱点。Java 目前处于第 8 版,第 9 版正在进行测试版测试。[50]
MS-DOS 和批处理文件
[edit | edit source]批处理处理自 20 世纪 50 年代就在大型机上使用。[51] 这一切始于穿孔卡片,但它发展成了一种完全数字化的语言。MS-DOS 是“Microsoft Disk Operating System”的首字母缩略词。MS-DOS 的界面只是一个黑色屏幕,上面有白色文字。从计算机发展的早期开始,DOS 就被用于读取和编写各种工作的程序。MS-DOS 批处理语言只是一个文本文件,允许用户创建一系列命令,这些命令就像在命令行中输入一样执行,并且有一些增强功能用于条件语句(根据程序是否失败或成功做出决定)。多年来,各种功能各异的批处理版本出现在许多计算平台上。命令提示符(现在称为命令提示符)仍然出现在现代 Windows 和 Linux 机器上,许多 IT 专业人士对其以及它赋予他们的强大功能和控制力发誓。这种自动化常见任务的能力通常是新兴程序员第一次接触编程语言的体验。
关键词回顾
[edit | edit source]过程式编程:一种程序设计方法,其中程序被分成小的模块,这些模块在需要时由主程序或另一个模块调用。
变量:在计算机程序中定义的命名内存位置,用于存储程序中使用的该数据项的当前值。
面向对象编程 (OOP):一种程序设计方法,其中程序由包含数据(属性)和过程(方法)的对象组成,这些数据和过程用于这些对象。
面向方面编程 (AOP):一种程序设计方法,其中不同的功能被清晰地分离,以便程序组件可以独立于彼此开发和修改,并且这些组件可以很容易地与单独的、无关的对象一起重用。
程序开发:创建应用程序程序的过程。
程序开发生命周期 (PDLC):包含程序开发的五个阶段的过程:分析、设计、编码、调试和测试,以及实施和维护应用程序软件。
问题分析:程序开发生命周期中的一个阶段,在这个阶段中仔细考虑问题并制定程序规范。
程序员:负责编写、测试和维护计算机程序的人员。
程序设计:程序开发生命周期中的一个阶段,在这个阶段中,程序规范被扩展成新程序的完整设计。
流程图:一种程序设计工具,它以图形方式显示计算机程序将采取的步骤。
伪代码:一种程序设计工具,它使用类似英语的语句来概述程序的逻辑。
统一建模语言 (UML):一套用于创建业务模型的标准符号;广泛用于面向对象程序的建模。
控制结构:一种用于控制计算机程序、模块或方法中逻辑流程的模式。
顺序控制结构:一系列相互跟随的语句。
选择控制结构:一系列语句,其中决定的结果决定了程序执行的方向。
重复控制结构:循环中的一系列语句,这些语句会重复执行,直到满足特定条件。
程序编码:程序开发生命周期中的一个阶段,在这个阶段中使用编程语言编写程序代码。
编码:编写编程语言语句以创建计算机程序的过程。
源代码:计算机程序在编译之前。
程序调试和测试:程序开发生命周期中的一个阶段,确保程序正确并按预期工作。
Alpha 和 Beta 测试:两种测试类型,可以提高产品在市场上的成功率和使用寿命。 https://www.softwaretestinghelp.com/what-is-alpha-testing-beta-testing。首先进行 Alpha 测试,在公司内部进行,Beta 测试则发送到不同的州或国家,以确保程序 100% 准备好使用。
调试:确保程序没有错误的过程。
目标代码:在编译程序的源代码时生成的计算机程序的机器语言版本。
语言翻译器:将源代码转换为目标代码的软件程序。
编译器:一种语言翻译器,在执行程序之前将其整个程序转换为机器语言。
解释器:一种语言翻译器,将程序语句逐行转换为机器语言,并立即执行每行。
1.) 编译之前,计算机程序被称为什么?
2.) 图形化显示计算机程序将采取的步骤的程序设计工具被称为 _______?
3.) PDLC 的哪个阶段使用编程语言编写程序代码?
4.) 如果你负责编写、测试和维护计算机程序,你就是一名 _______。
5.) 哪个语言翻译器在执行之前将整个程序转换为机器语言?
6.) 哪个过程确保程序没有错误?
7.) 创建应用程序程序的过程是什么?
8.) 程序开发生命周期中有几个阶段?
9.) 按顺序列出 PDLC 的阶段。
10.) 将源代码转换为目标代码的软件程序是什么?
1.) 源代码
2.) 流程图
3.) 程序编码
4.) 程序员
5.) 编译器
6.) 调试
7.) 程序开发
8.) 五个
9.) 分析、设计、编码、调试和测试、实施和维护应用程序软件
10.) 编译器
- ↑ http://education-portal.com/academy/lesson/object-oriented-programming-vs-procedural-programming.html#lesson
- ↑ http://education-portal.com/academy/lesson/object-oriented-programming-vs-procedural-programming.html#lesson
- ↑ http://www.java.com/en/
- ↑ http://www.wizards.com/dnd/
- ↑ http://www.onjava.com/pub/a/onjava/2004/01/14/aop.html
- ↑ http://www.adaptivesd.com/articles/messy.htm
- ↑ http://blog.teachbook.com.au/index.php/computer-science/software-development/program-development-lifecycle/
- ↑ http://study.com/academy/lesson/how-to-write-a-program-coding-testing-debugging.html
- ↑ Wikipedia: Flowgorithm
- ↑ http://www.webopedia.com/TERM/P/pseudocode.html
- ↑ http://whatis.techtarget.com/definition/compiler
- ↑ http://en.wikipedia.org/wiki/Compiler
- ↑ http://www.webopedia.com/TERM/C/compiler.html
- ↑ https://en.wikipedia.org/wiki/Compiler
- ↑ 理解计算机 第 14 版 由 Deborah Morley & Charles Parker 编写
- ↑ http://www.britannica.com/EBchecked/topic/1086517/sequence
- ↑ http://www.thevbprogrammer.com/Ch05/05-03-SelectionStructure.htm
- ↑ http://www.cs.fsu.edu/~myers/c++/notes/control1.html
- ↑ http://www.ehow.com/facts_5941523_desk-checking_.html
- ↑ http://searchsoftwarequality.techtarget.com/definition/debugging
- ↑ http://www.techopedia.com/definition/16373/debugging
- ↑ http://en.wikipedia.org/wiki/Debugging
- ↑ http://en.wikipedia.org/wiki/Debugging
- ↑ http://www.thefreedictionary.com/alpha+test
- ↑ http://www.centercode.com/blog/2011/01/alpha-vs-beta-testing/
- ↑ http://www.infoq.com/research/alm-survey
- ↑ http://office.microsoft.com/en-us/help/macros-demystified-what-they-are-and-why-to-use-them-HA010007210.aspx
- ↑ http://msdn.microsoft.com/en-us/library/ee658083.aspx
- ↑ http://www.computerworld.com/s/article/335519/Rich_Internet_Applications?taxonomyId=16&pageNumber=2
- ↑ Wikipedia: AngularJS
- ↑ Wikipedia: AngularJS
- ↑ Wikipedia: AngularJS
- ↑ Wikipedia: AngularJS
- ↑ Wikipedia: NodeJS
- ↑ [[1]]
- ↑ [[2]]
- ↑ [[3]]
- ↑ http://cplus.about.com/od/introductiontoprogramming/p/programming.htm
- ↑ http://www.webopedia.com/TERM/M/machine_language.html
- ↑ https://en.wikipedia.org/wiki/Very_high-level_programming_language
- ↑ http://dictionary.reference.com/browse/visual+programming+environment
- ↑ http://groups.engin.umd.umich.edu/CIS/course.des/cis400/pascal/pascal.html
- ↑ http://www.freerepublic.com/focus/chat/2880277/posts
- ↑ http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Lisp_(programming_language).html
- ↑ http://el.media.mit.edu/logo-foundation/logo/
- ↑ 维基百科:C++
- ↑ http://python.about.com/od/gettingstarted/ss/whatispython_7.htm
- ↑ https://www.java.com/en/download/faq/whatis_java.xml
- ↑ http://en.wikipedia.org/wiki/Java_(programming_language)
- ↑ https://www.oracle.com/java/index.html
- ↑ https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true