redo the commit
This commit is contained in:
parent
ede15b85c8
commit
9f3a1d4feb
|
@ -4,7 +4,7 @@
|
|||
软件工程师在开发软件系统时,不可避免地要用到某种程序设计语言。顾名思义,程序设计语言\index{程序设计语言}是程序员用来描述程序行为的语言。一般来说,每种程序设计语言往往具有某种应用背景、所属的语言范型以及鲜明的特征。程序理论作为程序设计语言的基础,不仅可以用于描述程序设计语言的语法、语义,还可以支撑程序的正确性构造。在计算机科学领域,曾出现过数百种程序设计语言。近几年,TIOBE、IEEE 等给出了目前常用的程序设计语言,排名居于前列的包括:Java、C、Python、C++、C\#、JavaScript、PHP等。Sebesta~\cite{sebesta2012concepts}从高级语言机制的设计角度对程序设计语言进行了深入细致的介绍和比较。大多数新程序设计语言的创建都受以前语言概念的启发,而新出现的程序设计语言往往通过规则的简化,使程序员的工作变得更加简单。
|
||||
|
||||
%程序设计语言的定义可分为语法、语义等方面。语义表示程序的含义,由静态语义和动态语义组成。静态语义指程序编译时可以确定的语法成分的含义;建立在转换/迁移系统上的动态语义则描述程序如何执行。
|
||||
|
||||
%
|
||||
\section{程序设计语言}
|
||||
|
||||
在计算机发展的早期,人们往往是用二进制(0/1序列)给计算机发指令。这显然很不方便。后来,逐渐出现了汇编语言\index{汇编语言}以及各种高级语言。一般来说,提高软件开发本身的效率与质量需要更抽象更高级的程序设计语言;而提高现实计算机硬件系统的利用率和执行效率,则需要使用较低级的程序设计语言,这样程序可以更直接地控制硬件资源。较通用的程序设计语言适用于广泛的应用领域和应用场景,可吸引大量的语言使用者,积累充足的遗产代码,便于培训与推广共享资源;但高度通用的语言设计上难以兼顾开发效率与执行效率。很多针对特定应用领域的程序设计语言更容易通过合适的语言机制同时改善软件开发与执行的效率。多样化的编程接口具有程序设计语言功能,但缺乏相应的编程框架甚至程序库等。这类接口反映了相应的编程模型的特点,实质上起到了程序设计语言的作用。
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
\section{重大挑战问题}
|
||||
在新的时代背景下,特别是在人机物融合的大环境下,软件理论遇到了新的挑战。具体包括:如何应对大规模的数据与计算(§\ref{sec:st-complexity});如何保证复杂软件系统的正确性、可靠性、安全性(§\ref{sec:st-reliability});针对新型计算机的硬件架构与新的计算平台,如何建立其理论分析基础(§\ref{sec:st-architecture});如何分析新型计算模型下的程序并保证它的正确性(§\ref{sec:st-quantum})。
|
||||
|
||||
%
|
||||
|
||||
\subsection{面向数据科学的算法与计算复杂性理论}\label{sec:st-complexity}
|
||||
构建高效的软件系统,需要发展算法设计与分析技术;确保算法的性能、理解计算的本质与界限,需要发展相应的计算复杂性理论。算法与计算复杂性理论,就是在这一背景与宗旨下发展形成的,是软件科学乃至计算机科学的根基。随着现代计算机科学进入大数据时代,建立在多项式时间图灵机和最坏情况复杂度分析基础上的传统算法与计算复杂性理论,在计算模型、问题模型和解决标准上,都面临新的挑战。
|
||||
|
|
Loading…
Reference in New Issue