:: wikimiki.org ::
| 程序设计 |
程序设计
程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。专业的程序设计人员常被称为程序员。
某种意义上,程序设计的出现甚至早于电子计算机的出现。英国著名诗人拜伦的女儿Ada Lovelace曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于她在程序设计上的开创性工作,Ada Lovelace被称为世界上第一位程序员。
任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。在计算机技术发展的早期,由于机器资源比较昂贵,程序的时间和空间代价往往是设计关心的主要因素;随着硬件技术的飞速发展和软件规模的日益庞大,程序的结构、可维护性、复用性、可扩展性等因素日益重要。
另一方面,在计算机技术发展的早期,软件构造活动主要就是程序设计活动。但随着软件技术的发展,软件系统越来越复杂,逐渐分化出许多专用的软件系统,如操作系统、数据库系统、应用服务器,而且这些专用的软件系统愈来愈成为普遍的计算环境的一部分。这种情况下软件构造活动的内容越来越丰富,不再只是程序设计活动了,还包括数据库设计、用户界面设计、接口设计、通信协议设计和复杂的系统配置过程。
设计工具
- 开发环境
- 编辑器、编译器、解释器、调试工具
- 集成开发环境
- 可视化开发环境
- 计算机辅助软件工程??
相关条目
- 程序
- 软件
- 程序设计语言
- 程序设计实践
- 程序设计方法学
- 软件开发
- 设计模式
- 计算机科学课程列表
Category:程序设计
ja:プログラミング
ko:프로그래밍
软件軟--件(中国大陆及香港用语,台湾作软体)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。
软件并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。
软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。
系统软件
系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
应用软件
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
较常见的有
#文字处理软件 如WPS、Word等
#信息管理软件
#辅助设计软件 如AutoCAD
#实时控制软件
#教育与娱乐软件
按操作系统分类
- BeOS
- DOS
- Linux
- Mac OS
- Unix
- Windows
软件开发
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。
软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。
软件许可
不同的软件一般都有对应的软件许可,软件的使用者必须在同意所使用软件的许可证的情况下采能够合法的使用软件。从另一方面来讲,某种特定软件的许可条款也不能够与法律相抵触。
未经软件版权所有者许可的软件拷贝将会引发法律问题,一般来讲,购买和使用这些盗版软件也是违法的。
相关内容
- 计算
- 计算机
- 计算机科学
- 计算机程序设计
- 程序设计语言
- 软件工程
- 算法
- 数据结构
- 软件开发过程
- 软件开发工具
- 软件优化
- 数字图像处理
- 计算机图形学
- 办公自动化
- 计算机网络
- 数据库
- 电子表格
- 开放源代码
- 自由软件
- 密码学
- Wiki
- 網誌
- 操作系统
- 软件许可证
- 推荐软件
参见
- 计算机软件列表
ja:ソフトウェア
ko:컴퓨터 소프트웨어
nb:Dataprogram
simple:Software
th:ซอฟต์แวร์
程序员程序员是从事程序开发、维护的专业人员。一般我们将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。
英国著名诗人拜伦的女儿Ada Lovelace曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于她在程序设计上的开创性工作,Ada Lovelace被称为世界上第一位程序员。
作为中国最早一批计算数学专业学生的王选院士在他回忆早年生活的文章中认为,董铁宝是“中国第一个程序员”。董铁宝1945年赴美国学习,在伊利诺伊大学学习、研究时,参与了第一代电子计算机伊利亚克机的设计、编程和使用。董铁宝于1956年回到中国并任教于北京大学,成为王选的老师。董铁宝在1968年文化大革命期间自杀身亡。
参考资料
- 王选《回忆北大数学力学系的大学生活》,自《北京大学数学学院九十年》纪念文集。
Category:程序设计
Category:職業
ja:プログラマ
ko:프로그래머
th:โปรแกรมเมอร์
拜伦拜伦(George Gordon Byron1788年1月22日在英國倫敦出生-1824年4月19日在希臘逝世),英国诗人;作家,世襲爵位,人稱拜倫勳爵Lord Byron,引領風騷的浪漫主义文學泰斗,又譯擺倫。其代表作有恰尔德·哈罗尔德游记,唐·璜等。唐·璜是一部未完的作品。
作品
拜伦是多产诗人,1833年出版的拜伦诗集,有17卷之多。拜伦著名的诗有:
- 《闲散的时光》
- 《当初我们两分别》
- 《给一位淑女》
- 《雅典的女郎》
- 《希腊战歌》
- 《她走在美丽的光彩里》
- 《我见过你哭》
- 《我给你的项链》
- 《写给奥古斯塔》
- 《普罗米修斯》
- 《席雍的囚徒》
- 《给托马斯·穆尔》
- 《恰尔德·哈洛尔德游记》
- 《唐·璜》
生平
拜伦一生放纵挥霍,债台高筑。与妻子分居以及乱伦指控使他受尽非议。最后死于希腊独立战争中。
译本
- 《拜伦诗选》:(英)拜伦著/查良铮译
- 《拜伦诗选》:(英)拜伦著/骆继光、温晓红译 ISBN 7805057109
参考
- 鲁迅《鲁迅全集》第一卷《坟》、《摩罗诗力说》
Category:诗人
Category:英国作家
B
B
硬件--包括电脑中所有物理的零件,以此来区分它所包括或执行的数据和为--提供指令以完成任务的--。--和--中也有分界模糊的地方,--是一种“内建”在--内的--,这样的--通常是电脑编程员和电脑工程师的范围,但在任何情况下也不需要电脑用户关心。
一台典型的电脑(个人电脑,PC)由卧式或塔式机箱和以下的部分组成:
- 主板 上承载着CPU(即中央处理器)、内存(随机存取存储器)和为扩展卡提供的插槽
- 内存 (随机存取存储器)
- SDRAM
- DDR
- DDR2
- 总线:
- PCI总线
- PCI-E总线
- ISA总线(已淘汰)
- USB
- AGP
- SCSI
- IDE
- SATA
- 电源
- 存储控制器
- 视频显示控制器
- 电脑总线
- 移动存储设备
- CD
- CD-ROM
- CD-RW
- CD-R
- DVD
- DVD-ROM
- DVD-RW
- DVD-R
- DVD-RAM
- DVD+RW
- DVD+R
- 软盘
- 磁带机
- 内置存储器
- 硬盘
- 磁盘阵列控制器
- 声卡
- 网络
- Modem
- 网卡
- 其它的周边
除此以外硬件包括以下的外置标准配件
- 输入
- 键盘
- 点击设备
- 鼠标
- 轨迹球
- 摇杆
- Gamepad
- 扫描器
- 网络摄像头
- 输出
- 打印机
- 扬声器
- 电脑显示屏
- 网络
- Modem
-
ja:ハードウェア
ko:컴퓨터 하드웨어
ms:Perkakasan komputer
simple:Hardware
th:อุปกรณ์คอมพิวเตอร์
通信协议 [http://www.cnpaf.net 网络传送协议] 或簡稱為传送协议,是指计算机通信的共同语言。现在最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI等。然而,传送协议也存在于计算机的其他形式通信,例如:Object-oriented Programming里面objects之间的通信;操作系统内不同程序之间的messaging,都需要有一个传送协议,以确保传信双方能够沟通无间。
以下為各種网络传输协议列表:
A
- 地址解析协议ARP ( Address Resolution Protocol)
B
- [http://www.cnpaf.net/class/bgp BGP] (Broder Gateway Protocol)边缘网关协议
- 蓝牙(Blue Tooth)
- BOOTP (Bootstrap Protocol)
C
- CLNP (Connectionless Network Protocol)
D
- [http://www.cnpaf.net/class/dhcp DHCP] (Dynamic Host Configuration Protocol)
- [http://www.cnpaf.net/class/dns DNS] (Domain Name Service)
- DVMRP (Distance-Vector Multicast Routing Protocol)
E
- EGP (Exterior Gateway Protocol)
F
- FTP (File Transfer Protocol)
G
H
- HDLC (High-level Data Link Control)
- HELLO(routing protocol)
- HTTP
- HTTPS
I
- ICMP (Internet Control Message Protocol)
- IDRP (InterDomain Routing Protocol)
- IEEE 802
- IGMP (Internet Group Management Protocol)
- IGP (Interior Gateway Protocol )
- IMAP
- IP (Internet Protocol)
- IPX ()
- IS-IS(Intermediate System to Intermediate System Protocol)
L
- LCP (Link Control Protocol)
- LLC (Logical Link Control)
M
- MLD (Multicast Listener Discovery)
N
- NCP (Network Control Protocol)
- NNTP (Network News Transfer Protocol)
- NTP (Network Time Protocol)
P
- PPP (Point-to-Point Protocol)
- POP
R
- RARP (Reverse Address Resolution Protocol)
- RIP (Routing Information Protocol)
S
- SLIP (Serial Link Internet Protocol)
- SMTP (Simple Network Management Protocol)
T
- TCP (Transmission Control Protocol)
- TFTP (Trivial File Transfer Protocol)
- Telnet (remote terminal protocol)
U
- [http://www.cnpaf.net/class/udp UDP] (User Datagram Protocol)
- USB
X
- X.
点
- 点对点协议
所有协议参考
- [http://www.cnpaf.net 中国协议分析网]
Category:网络协议
ja:通信プロトコル
编译器编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
- 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables])
工作原理
翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。
预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。
编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。
例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。
前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在次基础上进一步优化,处理。
编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraprocedural)还是函数之间(interprocedural)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。
上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。
编译语言与解释语言对比
许多人将高级程序语言分为两类: 编译型语言 和 解释型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用解释型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些解释型语言,很难用编译型实现。比如那些允许 在线代码更改 的解释型语言。)
历史
上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。
有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。
人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。
当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。
在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。
在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。
大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
参见
- 计算机科学课程列表
category:系统软件
Category:程序设计工具
ja:コンパイラ
ko:컴파일러
simple:Compiler
th:ตัวแปลโปรแกรม
集成开发环境集成开发环境(Integrated Development Environment,简称IDE),又名集成编程环境或可视化开发环境,是为方便软件开发人员进行开发而设计的软件,一般针对某一编程语言开发,大多数为界面友好的可视化环境,一般整合源代码编辑器、调试器、编译器和资源编辑器。
微软的VB 是早期的典型的可视化开发环境。后来的包括BORLAND公司的DELPHI等。
可视化开发环境的特点是“控件组装”。很多控件都是自己象画图一样组装起来的,开发环境解决了很多例行的、标准化的代码,比起非可视化的开发环境来说,更加直观,开发速度快,效率高。
以DELPHI为例:
DELPHI包含了程序代码文件(.PAS)和控件布局文件(.dfm),当你在画布(FORM)上拖放一个按钮(BUTTON)时,DELPHI开发环境会自动创建一个DFM文件标明BUTTON位置,并且自动在PAS文件中将最基本的完整代码替你写出来,你只需要在需要修改的地方修改或者增加就可以完成很多功能。
著名的集成开发环境有:
- Visual Development Envirnment
- Xcode
- Emacs
- KDevelop
- Delphi
- C++ Builder
- Microsoft Visual Studio
根据语言分类:
- Java
- IntelliJ IDEA
- Eclipse
- JBuilder
- Visual J++
- C or C++
- Visual C++
- C++ Builder
- Python
Category:程序设计工具
ja:統合開発環境
ko:통합 개발 환경
软件軟--件(中国大陆及香港用语,台湾作软体)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。
软件并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。
软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。
系统软件
系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
应用软件
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
较常见的有
#文字处理软件 如WPS、Word等
#信息管理软件
#辅助设计软件 如AutoCAD
#实时控制软件
#教育与娱乐软件
按操作系统分类
- BeOS
- DOS
- Linux
- Mac OS
- Unix
- Windows
软件开发
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。
软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。
软件许可
不同的软件一般都有对应的软件许可,软件的使用者必须在同意所使用软件的许可证的情况下采能够合法的使用软件。从另一方面来讲,某种特定软件的许可条款也不能够与法律相抵触。
未经软件版权所有者许可的软件拷贝将会引发法律问题,一般来讲,购买和使用这些盗版软件也是违法的。
相关内容
- 计算
- 计算机
- 计算机科学
- 计算机程序设计
- 程序设计语言
- 软件工程
- 算法
- 数据结构
- 软件开发过程
- 软件开发工具
- 软件优化
- 数字图像处理
- 计算机图形学
- 办公自动化
- 计算机网络
- 数据库
- 电子表格
- 开放源代码
- 自由软件
- 密码学
- Wiki
- 網誌
- 操作系统
- 软件许可证
- 推荐软件
参见
- 计算机软件列表
ja:ソフトウェア
ko:컴퓨터 소프트웨어
nb:Dataprogram
simple:Software
th:ซอฟต์แวร์
程序设计实践程序设计实践是程序设计中的经验总结,这里有许多事务、概念与技巧。
程序设计事务
sb
- 程序排错
- 程序测试
- 程序优化
- 程序移植
- 国际化开发
- 日志管理
程序设计概念
- 算法
- 数据结构
- 编程接口
- 中断
- 断言
- 异常处理
程序构造
参见:数据结构
- 字符串
- 文件
- 缓冲区
- 对象池、链接池、线程池
- 管道
- 套接字
编程接口
- POSIX
- ODBC
- JDBC
记法
- 宏
- 正则表达式
C++:
- STL
Java:
- JGL
- Struts
- Hibernate
参考书目
- 《程序设计实践》 Brian W. Kernigham 等著 裘宗燕译 机械工业出版社
相关条目
- 程序设计语言
- 软件设计模式
Category:程序设计
程序设计方法学程序设计方法学是讨论程序的性质以及程序设计的理论和方法的一门学科, 是研究和构造程序的过程的学问,是研究关于问题的分析,环境的模拟,概念的获取,需求定义的描述, 以及把这种描述变换细化和编码成机器可以接受的表示的一般的方法。
程序设计方法学发展历史
产生背景
- 1950年代—1960年代初,手工艺式的程序设计方法,高德纳把程序称为艺术品。
- 1960年代末—1970年代初,出现软件危机:一方面需要大量的软件系统,如操作系统、数据库管理系统; 另一方面,软件研制周期长,可靠性差,维护困难。编程的重点:希望编写出的程序结构清晰、易阅读、易修改、易验证,即得到好结构的程序。
- 1968年,北大西洋公约组织(NATO)在西德召开了第一次软件工程会议,分析了危机的局面,研究了问题的根源,第一次提出了用工程学的办法解决软件研制和生产的问题,本次会议可以算做是软件发展史上的一个重要的里程碑。
- 1969年,国际信息处理协会(IFIP)成立了“程序设计方法学工作组”,专门研究程序设计方法学,程序设计从手工艺式向工程化的方法迈进。
结构化程序设计的研究
- 1968 年,结构化程序设计方法的研究。Dijkstra 提出了“GOTO是有害的”,希望通过程序的静态结构的良好性保证程序的动态运行的正确性。
- 1969 年,Wirth 提出采用“ 自顶向下逐步求精、分而治之” 的原则进行大型程序的设计。其基本思想是:从欲求解的原问题出发,运用科学抽象的方法,把它分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。
“ 程序正确性证明” 的研究
- 1967年,Floyd 提出用“ 断言法” 证明框图程序的正确性。
- 1969年,Hoare 在Floyd 的基础上,定义了一个小语言和一个逻辑系统。此逻辑系统含有程序公理和推导规则,目的在于证明程序的部分正确性,这就是著名的Hoare逻辑。他的工作为公理学语义的研究奠定了基础。
- 1973年,Hoare和Wirth把PASCAL语言的大部分公理化。
- 1975年,一个基于公理和推导规则的自动验证系统首次出现。
- 1979年,出现了用公理化思想定义的程序设计语言Euclid。
- 1976年,Dijkstra提出了最弱前置谓词和谓词转换器的概念,用于进行程序的正确性证明和程序的形式化推导。
- 1980年,D.Gries综合了以谓词演算为基础的证明系统,称之为“程序设计科学”。首次把程序设计从经验、技术升华为科学。
- 1974年,人们利用模态逻辑验证并行程序的正确性。
- 关于程序正确性证明的争论:
- 怀疑和反对派,理由:首先,形式证明太复杂,谁能够保证证明本身没有错误呢!其次,程序写好后再证明其正确性,相当于“ 马后炮” ,即错误已经铸成,证明何能补救?
- 折中的方案:编写程序,边考虑证明。即程序设计与正确性证明同时并行考虑。
构造正确的程序
利用Dijkstra 的谓词转换器及其演算规则集合,可以推导出正确的程序。
利用程序变化构造正确的程序。它对程序应用一连串的保护正确性的变换规则,最终得到可执行的程序。程序变换是1970年代以来,“程序设计方法学” 研究的重要方面,是程序设计自动化很有希望的途径之一。递归程序变换是这一时期的最有意义的成果。 如Burstall 和Darlington 的递归程序变换系统等。
逻辑程序设计和函数程序设计代表一种新的研究方向。Prolog是以谓词逻辑的子集(Hoare 子句)为基础的一种形式系统。Prolog 的执行过程就是执行逻辑上消解算法的过程。
抽象数据类型的研究
抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。
研究的内容
- 结构化程序设计
- 数据抽象与模块化程序设计
- 程序正确性证明
- 程序变换
- 程序的形式说明与推导
- 程序综合与分析技术
- 面向对象的程序设计方法
- 大型程序的开发
与软件工程的关系
研究方法的不同
软件工程主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门计算机科学与工程学交叉的学科
程序设计方法学主要运用数学方法研究程序的性质以及程序设计的理论和方法的学科;
研究的对象不同
软件工程的研究对象是软件系统。目标是降低软件的开发成本,提高软件的质量,提高软件的可维护性,提高软件开发的效率。着重于软件的宏观可用性。
程序设计方法学研究对象是程序。目标是保证程序的正确性。着重于程序的微观正确性。
软件工程与程序设计方法学的界限变得越来越模糊
程序设计方法学是软件工程的基础。
Category:程序设计
设计模式 - 建筑设计模式
- 软件设计模式
- 《设计模式》...
Category:程序设计
Category:计算机软件
Category:软件工程 Велишане#виж Велешани
cellulitis Prague appartements alkomaty Pozycjonowanie london cheap hotel
|
|
|
| :: RELATED NEWS :: |
Jude Law
Jude Law est un acteur britannique né le 29 décembre 1972 à Lewisham (dans le grand Londres). Il a a divorcé de l'actrice Sadie Frost et est aujourd'hui fiancé avec l'actrice Sienna Miller. Il est le père de trois enfants.
Il est aussi le partenaire de Johnny Lee Miller et Ewan MacGregor dans la société de production cinématographique et théatrale le "Young Vic"
|
Bogis-Bossey
catégorie:commune du canton de Vaud
Bogis-Bossey est une commune suisse du canton de Vaud, située dans le district de Nyon.
Géographie
Bogis-Bossey fait partie de la région de Terre Sainte.
Liens externes
- [http://www.
|
Émile Bollaert
Né à Dunkerque, Emile Bollaert (1890-1978) suit des études secondaires à Paris et y passe sa licence en droit. En 1913, il entre comme attaché au cabinet du préfet du Nord, Félix Trépont.
Sous-lieutenant de chasseurs alpins pendant la guerre de 1914-18, son attitude lui vaut cinq citations et la Légion d'honneur.
En 1919, il commence une carrière préfectorale :
- chef de cabinet du préfet de la Loire (1919-1921) ,
- secrétaire général du Gers (1921-1922),
- sous-préfet d'Arcy-sur-Aube (en 1923),
- sous-préfet de Carpentras ,
- sous-préfet de Br
|
Islamisme
Définition
L'islamisme est un phénomène complexe et difficile tant à décrire qu'à interpréter car le terme décrit une grande variété de discours et de modes d'action. De nombreux auteurs se sont penchés sur ce phénomène et en fournissent des explications et des interprétations diverses qui varient en fonction de la définition donnée à l'islamisme, des mouvements, des modes d'actions ou des périodes étudiées : de toute évidence il est difficile d'interpréter de la même manière le terrorisme se réclamant de l'islamisme et les jami'at, associations carita
|
Théophylactes
Catégorie:Généalogie princière
Les Théophylactes sont une famille sénatoriale romaine qui excerça une mainmise sur la papauté aux Xe et XIe siècle.
Théophylacte, le fondateur de la dynastie, était sénateur et cumulait la gestion du trésor et des troupes militaire de Rome (magister militum), il contrôlait la papauté avec ses alliés dont Albéric de Spolète à qui il donna la main de sa
|
|
Model checking
Le Model Checking est une technique de vérification automatique des systèmes informatiques (logiciels, circuits logiques, protocoles de communication). Il s'agit de tester algorithmiquement si un modèle donné, le système lui-même ou une abstraction du système, satisfait une spécification logique, généralement fo
|
Cubewano
Un cubewano est également appelé objet classique de la ceinture de Kuiper ou, en anglais, classical kuiper belt object (CKBO).
Un cubewano est un membre d'une classe d'astéroïdes évoluant dans la ceinture de Kuiper. Le nom a été dérivé du nom du premier objet de cette classe, . Les objets suivants de cette classe ont été d'abord nommés les QB1-os, puis cubewanos. En effet, QB-1, en anglais, se prononce /kju:bwan/.
Ces objets restent à grande dista
|
Moment d'une force
En mécanique, le moment est une adaptation des notions de masse et de force pour le cas particulier de la rotation.
En effet, pendant une rotation, chaque point du solide décrit une trajectoire propre, et notamment subit une accélération propre (inversement proportionnelle au carré du rayon de la trajectoire). Lorsque l'on étudie chaque point séparément et que l'on intègre les lois de la m
|
|