update ch1-2 and reference

This commit is contained in:
Xin Peng 2020-03-01 08:30:52 +08:00
parent e95d8eee13
commit 6e890f16e9
2 changed files with 51 additions and 2 deletions

View File

@ -1,7 +1,7 @@
% !TEX root = main.tex
\section{概述}
%概念的界定,怎么展开
软件工程师在开发软件系统时,不可避免地要用到某种程序设计语言。顾名思义,程序设计语言\index{程序设计语言}是程序员用来描述程序的语言为程序员表达基于计算的解决方案提供了通用抽象设施。一般来说每种程序设计语言往往具有某种应用背景、所属的语言范式以及各自的个性特征。程序理论作为程序设计语言的基础提供程序抽象及其之间的推理和构造原理不仅可以用于描述程序设计语言的语法、语义还可以支撑程序的正确性构造、指导程序的高效正确的实现。在计算机科学领域曾出现过数百种程序设计语言。近几年TIOBE\footnote{https://www.tiobe.com/tiobe-index/}、IEEE 等给出了目前常用的程序设计语言排名居于前列的包括Java、C、Python、C++、C\#、JavaScript、PHP\note{本章提到的主要语言还是加上相应引用为宜。第一章中已经给出了许多语言的引用。}等。Sebesta~\cite{sebesta2012concepts}从高级语言机制的设计角度对程序设计语言进行了深入细致的介绍和比较。大多数程序设计语言的创建都受其之前语言概念的启发,而新出现的程序设计语言提供更强更为自然的抽象设施,使程序员的工作变得更加简单、有效。
软件工程师在开发软件系统时,不可避免地要用到某种程序设计语言。顾名思义,程序设计语言\index{程序设计语言}是程序员用来描述程序的语言为程序员表达基于计算的解决方案提供了通用抽象设施。一般来说每种程序设计语言往往具有某种应用背景、所属的语言范式以及各自的个性特征。程序理论作为程序设计语言的基础提供程序抽象及其之间的推理和构造原理不仅可以用于描述程序设计语言的语法、语义还可以支撑程序的正确性构造、指导程序的高效正确的实现。在计算机科学领域曾出现过数百种程序设计语言。近几年TIOBE\footnote{https://www.tiobe.com/tiobe-index/}、IEEE\footnote{https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019} 等给出了目前常用的程序设计语言排名居于前列的包括Java~\cite{arnold2000java}、C~\cite{kernighan2006c}、Python~\cite{van2011python}、C++~\cite{stroustrup2000c++}、C\#~\cite{hejlsberg2006c}、JavaScript~\cite{crockford2008javascript}、PHP~\cite{lerdorf2002programming}等。Sebesta~\cite{sebesta2012concepts}从高级语言机制的设计角度对程序设计语言进行了深入细致的介绍和比较。大多数程序设计语言的创建都受其之前语言概念的启发,而新出现的程序设计语言提供更强更为自然的抽象设施,使程序员的工作变得更加简单、有效。
%程序设计语言的定义可分为语法、语义等方面。语义表示程序的含义,由静态语义和动态语义组成。静态语义指程序编译时可以确定的语法成分的含义;建立在转换/迁移系统上的动态语义则描述程序如何执行。
%
@ -119,7 +119,7 @@
符号主义就是以符号逻辑系统\index{符号逻辑系统}为基础来表示知识。二十世纪七十年代Robert Kowalski 等人提出了逻辑可以作为程序设计语言的基本思想,把逻辑和计算这两个截然不同的概念统一在一起。这就是逻辑程序设计(Logic Programming)而Prolog语言就是典型的逻辑程序设计语言。对经典的逻辑程序设计语言可以进行各种扩充。例如将状态转移的控制机制引入到时序逻辑系统的XYZ/E是世界上第一个可执行的时序逻辑程序设计语言~\cite{Tang2002}
连接主义的代表是试图模拟人脑的人工神经网络。近十年来深度学习显示出了强大的学习能力和广泛的应用前景。TensorFlow、PyTorch等工具针对深度神经网络学习算法的特点利用高级语言展开生成\note{何谓展开生成?}神经网络结构然后以高性能方式运行学习算法。这些多样的领域特定语言工具不具备完整的通用程序设计语言功能,但十分适合特定的应用场景。
连接主义的代表是试图模拟人脑的人工神经网络。近十年来深度学习显示出了强大的学习能力和广泛的应用前景。TensorFlow、PyTorch等工具针对深度神经网络学习算法的特点便于高级语言调用相应的接口,搭建神经网络结构然后以高性能方式运行学习算法。这些多样的领域特定语言工具不具备完整的通用程序设计语言功能,但十分适合特定的应用场景。
\begin{itemize}
\item 个人计算与系统编程(1981$\sim$)

View File

@ -3601,4 +3601,53 @@ year="2017",
publisher="Springer International Publishing",
address="Cham",
pages="3--29"
}
@book{arnold2000java,
title={The Java programming language},
author={Arnold, Ken and Gosling, James and Holmes, David and Holmes, David},
volume={2},
year={2000},
publisher={Addison-wesley Reading}
}
@book{kernighan2006c,
title={The C programming language},
author={Kernighan, Brian W and Ritchie, Dennis M},
year={2006}
}
@book{van2011python,
title={The python language reference manual},
author={Van Rossum, Guido and Drake, Fred L},
year={2011},
publisher={Network Theory Ltd.}
}
@book{stroustrup2000c++,
title={The C++ programming language},
author={Stroustrup, Bjarne},
year={2000},
publisher={Pearson Education India}
}
@book{hejlsberg2006c,
title={The C\# programming language},
author={Hejlsberg, Anders and Wiltamuth, Scott and Golde, Peter},
year={2006},
publisher={Adobe Press}
}
@book{crockford2008javascript,
title={Javascript: the good parts: the good parts},
author={Crockford, Douglas},
year={2008},
publisher={" O'Reilly Media, Inc."}
}
@book{lerdorf2002programming,
title={Programming Php},
author={Lerdorf, Rasmus and Tatroe, Kevin and Kaehms, Bob and McGredy, Ric},
year={2002},
publisher={" O'Reilly Media, Inc."}
}