编程语言
编程语言一个程序员的语言吗实现了一块软件在电脑上运行。最早的编程语言汇编语言,而不是远离二进制编码由计算机直接执行的指令。到1950年代中期,程序员开始使用高级语言。
两种的第一个高级语言FORTRAN(公式翻译)大陵五(算法语言),它允许程序员写代数表达式和解决科学计算问题。随着学习编程变得越来越重要在1960年代,FORTRAN的精简版本基本(初学者通用符号指令代码)是在开发的达特茅斯学院。基本迅速蔓延到其他学术机构,到1980年版本的基本个人电脑甚至允许学生在小学学习的基础编程。此外,在1950年代中期,COBOL(常见的面向业务的语言)是来支持业务开发的编程应用程序涉及管理信息存储在记录和文件。
趋势自那时以来已向发展中越来越抽象的语言,允许程序员沟通机水平越来越远离机器代码。COBOL、FORTRAN和他们的后代(帕斯卡和C被称为,例如)命令式语言,因为他们指定一个明确的命令序列的机器是如何解决手头的问题。这些语言也被称为程序语言,因为他们允许程序员开发和重用程序、子程序和函数,以避免改造基本任务为每个新的应用程序。
其他高级语言函数式语言,一个程序被视为一组(数学)函数及其语义非常精确定义。最著名的这种类型的函数式语言口齿不清(列表处理),在1960年代的主流编程语言人工智能应用程序。继任者LISP的人工智能社区包括计划、Prolog和Cc++(见下文)。计划类似于LISP,除了它有一个更加正式的数学定义。序言主要用于逻辑编程,其应用包括自然语言理解和霉菌素等专家系统。尤其是一个所谓的序言非过程或声明式语言,在某种意义上来讲,程序员指定要完成什么目标而不是如何应用到特定的方法达到这些目标。C和c++已经广泛应用于机器人人工智能研究的一个重要应用。一个扩展的逻辑编程模式匹配的约束逻辑编程,取而代之的是更一般的操作约束的满意度。
另一个重要的编程语言发展到1980年代的支持数据封装,这催生了面向对象的语言。原来的面向对象的语言Smalltalk,所有项目都表示为相互通信通过消息传递的对象集合。一个对象是一个集数据的方法(函数),可以将这些数据。封装是指一个对象的数据只有通过这些方法可以访问。面向对象编程非常有影响力的计算。语言面向对象编程包括c++, Visual BASIC,Java。
Java是不同寻常的,因为它应用程序而不是进入一个特定的机器语言翻译成一种中间语言Java字节码,这在Java虚拟机(JVM)上运行。程序可以在JVM上运行在大多数当代计算机平台,包括英特尔的系统,苹果macintosh电脑和各种安卓的智能手机和平板电脑。因此,LinuxiOS,窗户和其他操作系统可以运行Java程序,这使得Java创建分布式和基于web的应用程序的理想选择。驻留在网络服务器,Java程序可以下载并运行在任何标准Web浏览器提供各种服务,如客户端接口或者进入游戏数据库驻留在服务器上。
在一个更高的水平抽象谎言声明式和脚本语言,严格解释语言和经常开车运行的应用程序在Web浏览器和移动设备。一些声明性语言允许程序员方便地访问和检索信息从数据库使用“查询”,声明要做什么(而不是怎么做)。一种广泛使用的数据库查询语言是SQL(结构化查询语言)及其变种(例如,MySQL和SQLite)。与这些声明性语言是那些描述Web页面的布局在用户的屏幕上。例如,HTML(超文本标记语言)支持网页的设计通过指定他们的结构和内容。将Web页面与数据库的任务脚本语言(例如,PHP),这是一个程序员的工具集成声明语句的HTML和MySQL必要的所需的行为效应在用户和数据库之间的交互。一个例子是一个在线图书订购Amazon.com,用户查询数据库找出书是可用,然后启动一个订单按按钮和适当的文本区域填满他或她的订购信息。软件作为这种活动包括HTML描述Web页面的内容,MySQL来访问数据库根据用户的请求,和PHP来控制事务的整体流程。
电脑在其他语言比机器语言编写的程序必须解释或翻译成机器语言(“编译”)。正如上面说的,一个翻译软件,检查吗计算机程序一次一个指令和要求代码执行指令所需的机器操作。
一个编译器整个计算机程序是软件翻译成机器代码保存为后续执行时所需的。大部分的工作已经完成了编译过程和编译后的代码尽可能的高效。开发一种新语言时,它通常是解释。如果以后变得流行,开发一个编译器,因为编译比解释更有效。
有一个中间的方法,而不是成机器语言编译代码到一个中间语言(称为虚拟机)是足够接近机器语言,它是有效的解释,尽管不是那么近,它与特定计算机的机器语言。这个方法提供了Java语言的计算机通过JVM平台独立性。
安全与信息保障
安全和信息保障是指保护的政策和技术元素信息系统通过确保其可用性,完整性,认证,并适当的保密级别。发生在许多领域计算机信息安全概念科学,包括操作系统,计算机网络,数据库和软件。
操作系统安全涉及从外部攻击的保护恶意软件干扰系统的普通任务的完成。网络安全提供了保护整个网络被外界的攻击。尤其信息数据库脆弱的被盗、破坏或恶意修改数据库服务器是多个用户通过网络访问。第一个行国防部只允许访问电脑授权用户通过身份验证的用户密码或类似的机制。
然而,聪明的程序员(称为黑客)已经学会了如何规避这样的机制设计计算机病毒程序复制,传播在计算机网络中,和“感染”系统通过破坏居民文件和应用程序。数据可以被使用设备,如“特洛伊木马”,程序执行一个有用的任务,但也含有隐藏恶意的代码,或者通过窃听网络通信。需要保护敏感数据(如保护国家安全或个人隐私)导致的进步密码学和加密标准的发展提供一个高水平的信心,解码的数据是安全的,即使是最聪明的攻击。
软件工程
软件工程是纪律关心理论的应用、知识和实践构建可靠的软件系统,满足客户和用户的计算要求。它适用于小,中期和大规模计算系统和组织。软件工程使用工程方法、流程、技术和测量。软件发展,是否由一个人或一个团队,需要选择最合适的工具、方法和方法对于一个给定的环境。
软件正成为一个更大的一部分计算机系统并已成为复杂的开发,往往需要团队的程序员和多年的努力。因此,开发一个大型的软件可以被视为一个工程任务小心翼翼和关注成本,最终产品的可靠性和可维护性。软件工程过程通常被描述为包括几个阶段,称为生命周期,不同的定义,但一般包括需求开发,分析和规范,设计,建设、验证、部署、操作和维护。
软件项目的高失败率的担忧导致非传统软件开发过程的发展。值得一提的是敏捷软件过程,包括快速发展和包括客户端作为一个积极和团队的关键成员。敏捷开发已经发展的有效利用开源软件,这是不同的专有的软件,因为用户可以自由下载并修改它来适应他们的特定的应用程序需求。尤其是成功的开源软件产品包括Linux操作系统Firefox Web浏览器和Apache OpenOffice文字处理和电子表格/演示套件。
无论发展方法选择,软件开发过程是昂贵和费时的。自1980年代初以来,日益复杂的工具已建成以帮助软件开发人员和开发过程尽可能自动化。这样的计算机辅助软件工程(例)工具跨度范围广泛的类型,从那些执行例行的任务编码时给出一个适当的详细设计在某些指定的语言那些包含一个专家系统执行设计规则和编码阶段之前消除软件缺陷。
的大小和复杂性软件的发展,重用的概念已成为越来越重要的在软件工程中,因为很明显,广泛的新软件不能便宜和快速创建不整合现有程序模块(子程序或计算机代码)。面向对象编程的有吸引力的一个方面是,编写的代码的对象很容易重用。与计算机系统的其他方面一样,可靠性(通常是相当模糊的正确操作定义为一个系统的可能性在相当长一段时间)是一个关键的目标完成的软件产品。
复杂的技术测试软件也被设计。例如,单元测试是一个战略测试每个模块在模块独立的软件产品结合成一个整体使用“集成测试技术和测试。
需要受过更好训练软件工程师导致教育项目的开发中,软件工程是一个独立的专业。软件工程师的建议,类似于其他工程师、许可或认证已经得到了越来越多的支持,为软件工程学位认证的过程。