Ada语言的简介

Ada语言的简介,第1张

Ada的出现,标志着软件工程成功地进入了国家和国际的规模。在一定意义上说,Ada还刺破了“冯.诺依曼思维模式” (Von Newman Mind-set) 的桎梏,连同Ada的 支持环境(APSE)一起,形成了新一派的所谓 Ada文化。它是迄今为止 最复杂,最完备的软件工具。 Ada语言是 美国国防部指定的 唯一的一种可用于 军用系统开发的语言,我国军方也将Ada做为军内开发标准(GJB 1383《程序设计语言Ada》)。

-------------------------------------------------------------------------------- 美国国防部之所以把这种语言取名为Ada,是为了纪念奥古斯特. 艾达.洛夫莱斯伯爵夫人 (Augusta Ada Lovlace 1815-1852),她是英格兰诗人拜伦(Byron)勋爵的女儿,曾对现代计算机运腊技术之父查尔斯.巴贝奇(Charles Babage)的笔记,手稿进行了整理和修正。从某种意义上说,她是世界上第一位计算机程序员。

-------------------------------------------------------------------------------- 在明白这个问题之前,需要了解 Ada 的一系列特性。Ada 最初设计就是一门大型语言,因此在很多编程的重要问题上都有所考虑,以下文字摘自《 Ada Reference Manual》:

Ada最初设计时关注于 3 个最重要的问题:程序的稳定性和可维护性,程序设计和人的行为接近,并且高效。这份语言的修订版是为了提供更大的灵活性和扩展性,存储管理的额外控制和同步,以及标准化的程序包以支持重要的应用程序领域,同时保留原来的重点:稳定性,可维护性,和高效。对于程序设计语言促进可靠性和简化维护难度的需求已被确立。因此程序可读性的重要性高于轻松地写代码。例如,语言规则要求程序变量应当明确声明并指定它们的类型。由于变量的数据类型是不变的,编译器可以确保对于变量的 *** 作适用于该类型的对象。另外,有错误倾向的符号已经避免,并且语言语法避免了编码形式的使用,使更倾向于英语的结构。最后,Ada 语言提供了程序单元单独编译的功能,使程序开发和维护简便,同样也提供了在一个单元内多个单元之间的检测。悄派考虑人类程序员的启悄贺问题也在设计时被强调。总而言之,在继续避免过多复杂句型的缺陷的同时,尝试以一致系统的方式保持相对较少的底层概念。

------------------------------------------------------------------------------ Ada语言最早是针对嵌入式和实时系统设计的,并且在今天依然在这方面使用广泛。Ada95版,是由INTERMETR ICS公司的塔克。塔夫特于92到95年间设计的,当时主要是希望改进对于系统,数字,财务软件编程的支持。

Ada语言的重要特征就是其嵌入式风格,模块化设计,编译检查,平行处理,异常处理及泛型编程。Ada在95年加入了对面向对象设计的支持,包括动态分配等。

Ada的编译检查主要是针对没有分配的内存读写的保护,堆栈溢出错误,单个错误空闲,队列读写错误以及其他可以避免的小问题。这些检查可以在为增加效率的情况下被取消,但是在编译的时候他们却能带来很高的效率。同样它也包括对程序的严正的设置。因为这些原因,它被广泛应用于一些非常重要的系统中,例如航空电子学,武器及航天飞行器的 *** 作系统中。同样它支持很多的编译时间检查,这些检查被用来避免一些错误的发生。这种错误往往是在其他语言中在运行以前都不能被察觉到的,需要在源码中加入特殊的检查设置才能被发现。

Ada的动态内存管理非常安全和高规格,它类似于JAVA语言却不同于C语言的。这种特殊功能并不需要特殊的运行设置。尽管这种语言的语意结构允许对于不能读写的目标进行自动的碎片搜集,但是大多数运行都不支持它。A da却支持有限形式基于区域的存储管理。无效的读写常在运行时候被检查出来(除非这种检测被人为关闭)并且有时候在编译时候就被发现。

Ada语言的定义同国际标准化组织(ISO)的标准有很大不同,因为他是一个自由内容形式的。这种做法的后果是被广大程序员只能从它的标准化文档(普遍认为是Ada的参考使用手册(ARM))寻找细节性的技术问题,但是普遍情况是一本标准教科书却可以在其他不同语言上使用。 Ada语言由严格的巴斯特范式定义,但是不适合一般人阅读.它是第一种同时拥有IEC/ISO/美国军用标准认证的语言. 其编译器经过严格的审查,以确保同样的代码在任一编译器上产生同样的可执行效果.并且保证并行性在代码级可以在无 *** 作系统下同样运行.

Ada语言最初设计是为了构建长周期的、高度可靠的软件系统。它提供了一系列功能来定义相关的数据类型(type) 、对象(object)和 *** 作(operation)的程序包(package)。程序包可以被参数化,数据类型可以被扩展以支持可重用库的构建。 *** 作既可以使用方便的顺序控制结构,通过子程序(subprogram)来实现,也可以通过包含并发线程同步控制的入口(entry)来实现。

Ada也支持单独编译(separate compilation),在物理层上支持模块性。 Ada包含了很复杂的功能以支持实时(real-time),并发程序设计(concurrent programming)。错误可以作为异常(exception)来标示,并可以被明确地处理。

Ada也覆盖了系统编程(system programming);这需要对数据表示和系统特性访问的精确控制。最后,提供了预定义的标准程序包,包括输入输出、字符串处理、数值计算的基本函数和随机数生成来。

Ada是一种表现能力很强的通用程序设计语言,它是美国国防部为克服软件开发危机,耗费巨资,历时近20年研制成功的。它被誉为第四代计算机语言的成功代表。与其他流行的程序设计语言不同,它不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。因此,握誉信Ada语言的使用可大大改善软件系统的 清晰性, 可靠性, 有效性, 可维护性。

Ada的出现,标志着软件工程成功地进入了国家和国际的规模。在一定意义上说,Ada还刺破了“冯.偌依曼思维模式” (Von Newman Mind-set) 的桎梏,连同Ada的 支持环境(APSE)一起,形成了新一派的所谓 Ada文化。它是迄今为止 最复杂,最完备的软件工具。 Ada语言是 美国国防部指定的 唯一的一种可用于 军用段轮系统开发的语言,我国军方也将Ada做为军内开发标准(GJB 1383《程序设计语言Ada》)。

--------------------------------------------------------------------------------

-- 为什么称作 Ada --

美国国防部之所以把这种语言取名为Ada,是为了纪念奥左斯特. 艾达.洛夫莱斯伯爵夫人 (Augusta Ada Lovlace 1815-1852),她是英格兰诗人拜伦(Byron)勋爵的女儿,曾对现代计算机技术之父查尔斯.巴贝奇(Charles Babage)的笔记,手稿进行了整理和修正。从某种意义上说,她是世界上第一位计算机程序员。

--------------------------------------------------------------------------------

-- 为什么使用 Ada? --

在明白这个问题之前,需要了解 Ada 的一系列特性。Ada 最初设计就是一门大型语言,因此在很多编程的重要问题上都有所考虑,以下文字摘自《 Ada Reference Manual》:

Ada最初设计时关注于 3 个最重要的问题:程序的稳定性和可维护性,程序设计和人的行为接近,并且高效。这份语言的修订版是为了提供更大的灵活性和扩展性,存储管理的额外控制和同步,以及标准化的程序包以支持重要的应用程序领域,同时保留原来的重点:稳定性,可维护性,和高效。对于程序设计语言促进可靠性和简化维护难度的需求已被确立。因此程序可读性的重要性高于轻松地写代码。例如,语言规则要求程序变量应当明确声明并指定它们的类型。由于变量的数据类型是不变的,编译器可以确保对于变量的 *** 作适用于该类型的对象。另外,有错误倾向的符号已经避免,并且语言语法避免了编码形式的使用,使更倾向于英语的结构。最后,Ada 语言提供了程序单元单独虚弊编译的功能,使程序开发和维护简便,同样也提供了在一个单元内多个单元之间的检测。考虑人类程序员的问题也在设计时被强调。总而言之,在继续避免过多复杂句型的缺陷的同时,尝试以一致系统的方式保持相对较少的底层概念。

------------------------------------------------------------------------------

ada的特性:

易读性---专业人员往往要读很多程序,因此要避免像 APL 那种以过于简单的符号编程的语言,虽然它们的编程速度快,但基本上是不可读的。因此目前有种说法是:读一个程序比写类似的程序还要费时,这也是有一定道理的;特别是 C/C++ 的风格比较松散,很多语法都在滥用,使程序可读性相当低,由于 Ada 的语法接近人的语言,即使是初学者,也不会感到很难读懂。

强类型---保证了每个对象有明确定义的值域,并防止了不同概念的逻辑混淆。许多错误可以被编译器发现,而对于其它语言来说,则可能导致一个不正确的程序。

异常处理---实际中,一个程序不可能保证它的正确性;因此,通过异常机制及分块结构,将错误发生的影响控制在某一特定领域。

抽象数据类型---将数据描述的细节同基于该类型数据的 *** 作相分离,以提高可移植性和可靠性。

多任务---使程序变成一系类的并发活动,而不是单一的顺序活动;这在很多领域,特别是对于服务器程序来说有重要意义,这比调用 *** 作系统提供的功能更有易可移植性和可靠性。

类属单元---很多情况下,程序的某逻辑部份与运行时值的类型无关。因此,需要提供一种机制,从一个样板中产生多个相应的程序段,以提高代码的可重用性。

大型编译---封装机制,单独编译及程序包的分层机制等对于编写大规模的程序来说是必不可少的。

Ada语言的"世界,你好!" 示例程序

一个Ada语言编写的"你好世界"Hello world program程序:

with Ada.Text_IOprocedure Hello isbegin Ada.Text_IO.Put_Line("Hello, world!")end Hello

在Ada.Text_IO.Put_Line处有一些快捷图标,不需要很多的文字输入,但是对于这里的理解来讲并没有多大意义。细节性的问题请参考Ada Programming/Basic。

很多朋友都知道如何在linux平台如何编译比特币程序,但是,到了windows平台,

就会感觉到无从下手. 其实, 比特币程序是跨平台的.

你要编译windows版的比特币程序,基本上有两种方法,一种是在linux平台

(推荐ubuntu 13.10)通过交叉编译的方法来编译.另外一种,就是直接在windows平台编译.

我想,你既然要在windows平台使用,我就详细介绍一下如何在windwows平台编译比特币程序.

我的平台:windows7

第一步:安装变编译环境QT和MINGW,msys

1、msys是一个在windows平台模拟shell的程序。

下载安装程序之后,通过安装管理程序,按安装以下内容:

From MinGW installation manager ->All packages ->MSYS

选中以下安装包

msys-base-bin

msys-autoconf-bin

msys-automake-bin

msys-libtool-bin

点 apply changes开始安装。他会自动下载安装好。

需要注意的是,确保不要安装msys-gcc和msys-w32api ,因正森为这两个包和我们的编译系统发生冲突。

很多人出现一些莫名其妙的问题,就是因为这两个包。

2、安装 MinGW-builds

下载并解压缩 i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z 到C盘根目录 C:\

注意我的目录结构。你尽量和我一样。

3、吵清亏设置PATH环境变量,将C:\mingw32\bin添加到第一个。

4、在命令行模式下输入 gc -v 会得到以下内容

c:\gcc -v

Using built-in specs.

COLLECT_GCC=c:\mingw32\bin\gcc.exe

COLLECT_LTO_WRAPPER=c:/mingw32/bin/升神../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe

Target: i686-w64-mingw32

Configured with: ../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib -L/c/mingw482/prerequisites/i686-zlib-static/lib -L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'

Thread model: posix

gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)

至此,你的开发环境已经搭建好了,很简单吧

第二部分:下载bitcoin引用的外部库

我们把它们全部放在 C:\deps目录下

2.1 安装OpenSSL下载:

进入启动 MinGw shell 比如目录:(C:\MinGW\msys\1.0\msys.bat)运行这个msys.bat,就会启动一个shell环境,提示符是$

输入命令

cd /c/deps/

tar xvfz openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

Configure no-shared no-dso mingw

make

等待几分钟后,就把openssl编译好了。

2.2 下载Berkeley DB

我们推荐使用 4.8版本

同样在msys shell环境下输入以下命令

cd /c/deps/

tar xvfz db-4.8.30.NC.tar.gz

cd db-4.8.30.NC/build_unix

../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication

make

等待编译

2.3 安装Boost

msys命令:

cd C:\deps\boost_1_55_0\

bootstrap.bat mingw

b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage

2.4 安装Miniupnpc

cd C:\deps\miniupnpc

mingw32-make -f Makefile.mingw init upnpc-static

2.5下载 protoc 和 libprotobuf:

msys shell命令

cd /c/deps/protobuf-2.5.0

configure --disable-shared

make

2.6 qrencode:

命令

cd /c/deps/libpng-1.6.10

configure --disable-shared

make

ode:

cd /c/deps/qrencode-3.4.3

LIBS="../libpng-1.6.10/.libs/libpng16.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \

png_CFLAGS="-I../libpng-1.6.10" \

png_LIBS="-L../libpng-1.6.10/.libs" \

configure --enable-static --disable-shared --without-tools

make

2.7 安装 Qt 5 库

在 windows命令行输入:

set INCLUDE=C:\deps\libpng-1.6.10C:\deps\openssl-1.0.1g\include

set LIB=C:\deps\libpng-1.6.10\.libsC:\deps\openssl-1.0.1g

cd C:\Qt\5.2.1

configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl-linked -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug

mingw32-make

set PATH=%PATH%C:\Qt\5.2.1\bin

cd C:\Qt\qttools-opensource-src-5.2.1

qmake qttools.pro

mingw32-make

3. 下载Bitcoin 0.9.1

在msys shell下输入以下命令行:

cp /c/deps/libpng-1.6.10/.libs/libpng16.a /c/deps/libpng-1.6.10/.libs/libpng.a

cd /c/bitcoin-0.9.1

./autogen.sh

CPPFLAGS="-I/c/deps/boost_1_55_0 \

-I/c/deps/db-4.8.30.NC/build_unix \

-I/c/deps/openssl-1.0.1g/include \

-I/c/deps \

-I/c/deps/protobuf-2.5.0/src \

-I/c/deps/libpng-1.6.10 \

-I/c/deps/qrencode-3.4.3" \

LDFLAGS="-L/c/deps/boost_1_55_0/stage/lib \

-L/c/deps/db-4.8.30.NC/build_unix \

-L/c/deps/openssl-1.0.1g \

-L/c/deps/miniupnpc \

-L/c/deps/protobuf-2.5.0/src/.libs \

-L/c/deps/libpng-1.6.10/.libs \

-L/c/deps/qrencode-3.4.3/.libs" \

./configure \

--disable-upnp-default \

--disable-tests \

--with-qt-incdir=/c/Qt/5.2.1/include \

--with-qt-libdir=/c/Qt/5.2.1/lib \

--with-qt-bindir=/c/Qt/5.2.1/bin \

--with-qt-plugindir=/c/Qt/5.2.1/plugins \

--with-boost-system=mgw48-mt-s-1_55 \

--with-boost-filesystem=mgw48-mt-s-1_55 \

--with-boost-program-options=mgw48-mt-s-1_55 \

--with-boost-thread=mgw48-mt-s-1_55 \

--with-boost-chrono=mgw48-mt-s-1_55 \

--with-protoc-bindir=/c/deps/protobuf-2.5.0/src

make

strip src/bitcoin-cli.exe

strip src/bitcoind.exe

strip src/qt/bitcoin-qt.exe

这样,你就得到了变异好的 bitcoin-cli.exe和bitcoind.exe ,bitcoin-qt.exe(windows QT图形界面的钱包软件)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12294567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存