博文

沉痛悼念Fortran创始人之一巴库斯辞世(2007-03-21 13:45:00)

摘要:转载按:一个优秀的程序员并不在于一生写过多少程序,而在于一生所写的唯一的一个程序普及的范围。巴库斯作为Fortran语言的创始人之一其人生经历非常坎坷,终于他可以去天堂了。。或许那里不再有程序的烦扰,或许他将为上帝创作一个更有价值的新语言。 来源地址:http://www.it.com.cn/f/news/073/21/396292.htm 新浪科技讯 北京时间3月20日消息,据《纽约时报》报道,Fortran创始人约翰·巴库斯(John W. Backus)上周六在美国俄勒冈州的家中去世,享年82岁。Fortran由巴库斯领导的IBM团队开发完成,是第一门广泛应用的程序语言。从某种意义上讲,Fortran的出现打开了现代计算的大门。   巴库斯的女儿卡伦·巴库斯(Karen Backus)公布了父亲去世的消息。著名计算机历史学家简·李(J.A.N. Lee)表示,1957年发布的Fortran堪称是软件行业的转折点,就像微处理器对硬件行业一样重要。Fortran改变了人机通信的方式,使得程序语言更容易被用户理解和接受。因此,Fortran一直被认为是首款大获成功的高级语言。   上世纪50年代,巴库斯领导一个年轻的团队开发出了一门新型程序语言。从表面看来,它就像是英语速记和代数的结合。事实上,Fortran就是公式转换器(Formula Translator)的简称,同工程师及科学家日常使用的代数公式有很多相似之处。经过一段时间培训,他们就可以十分轻松地将科学和工程问题转化为计算机能够“理解”的语言。Unix操作系统开发者之一的肯·汤普森(Ken Thompson)几年前表示,如果没有Fortran,早期阶段将有95%的程序员无法正常工作。   另一方面,Fortran的效率非常高,大大缩小了程序开发人员之间的水平差距,这在Fortran出现之前几乎无法想象。Fortran的高效率主要源于编译器的设计,它可以准确地“捕捉”开发人员的意图,并将其转化为计算机可以处理的方式。在Fortran项目中,巴库斯解决了两个基本问题:如何让程序语言更容易被用户掌握,以及如何构造底层代码。在整个工作生涯中,他一直在积极应对这两大挑战。IBM退休研究员弗朗西斯·阿伦(rances Allen)表示:“巴库斯做出了巨大的贡献,影响了很多人的工作,包括我在内。”   早在青......

阅读全文(2645) | 评论:1

关于Fortran程序中常见的错误(2006-12-22 10:04:00)

摘要:有闲暇时间定当细看,并作总结! http://www-128.ibm.com/developerworks/aix/library/au-portfortan.html......

阅读全文(2571) | 评论:0

Found some website about the comparision(2006-10-19 23:16:00)

摘要:Found a website which list some famous fortran compiler. http://www.polyhedron.com/pb05/linux/diagnose.html If you want to learn more just up to the upper directory. By the way, I had learn more about the compiler in today. At least I know the check for the over boundary of an array can be down by the compiler. Especially, if I using Intel Fortran compiler, I can use the -CB option to check it. Enjoy it.:)......

阅读全文(2468) | 评论:0

Some problem in Dayanmic allocation.(2006-10-07 22:36:00)

摘要:I am always confused by the concept of pointer, nullify, allocate and deallocate and so on. For my project, I have to use them. In fact, those features are very useful for an programer. But.... I am not a programer althouth I really try to be. After I found in some other place, I have to post this question in comp.lang.fortran, and there are so many replys appears immediately.  Even there are some guys from NASA, I am really very exciting. Here is the post URL: http://groups.google.ca/group/comp.lang.fortran/browse_thread/thread/c6961b6bda5c904e/215bfbd1b9a15364#215bfbd1b9a15364 I had learn many concept from this post. I will try to repair my program. :0) Today is a very nice day.......

阅读全文(2891) | 评论:0

Fortran 语言常用的分配内存的语句及其功能区别(2006-09-30 23:10:00)

摘要:下边的文字来自于visual Fortran 6.5 help 文档,Thanks for the Editor of the document. I just translate it. Enjoy. 动态内存分配数据对象可以是静态的也可以是动态的。 如果数据对象是静态的,在编译的时候,就会给数据对象给定一定数量的内存,并且在执行期间直到程序退出才会释放这些内存。如果数据对象是动态的,对象所需要的内存可以在程序运行的过程中被创建、修改和释放。  在Fortran 95/90中,指针、可变数组和自动数组都是动态数据对象。 对于指针而言,直到指针被使用allocate语句赋值或者指针被指向一个动态的目标,才会有存储空间。指针可以使用NULLFY语句从目标上动态的移除。 Allocate 语句也可以为一个动态数组创建存储空间。而deallocate语句可以用于释放用前面的allocate语句创建的存储空间。  自动数组与可变数组的区别在于他们是在流程进入到一个过程后自动的生成和释放的。 声明型语句: ALLOCATABLE : 用于申明数组是动态可分配的。 Pointer : 申明是指针类型的变量。 可执行语句: 创建存储空间: allocate : 该语句即可以用于动态数组也可以用于指针的内存分配。 释放存储空间: deallocate : 该语句可以用于释放由allocate 创建的动态数组和指针的存储空间。 NULLIFY :用于解除指针与目标之间的关联,尤其是指针不是由allocate创建分配的内存。 ASSOCIATED :用于测试当前指针是否有目标与其关联,(这里需要注意,所有建立但未初始化的指针的关联状态都是不确定,在这种情况下,该函数返回的逻辑值是不可信的.) pointer-object => target :指针的赋值和传值标记。 ......

阅读全文(7455) | 评论:0

刚发现的Fortran的几个有用的小程序(2006-04-09 20:58:00)

摘要:好象是个法国的Fortran专家的个人主页。里面包含了几个有用的程序:包括 Moware-1.0, The Fortran 90 pre-processor (and, in Michel's humble opinion, pretty-printer), and the three other utilities, in a single directory with a Makefile. All you should need is a make utility and a Fortran 90 compiler, but please report bugs and errors. f90ppr.f90, The Fortran 90 pre-processor and pretty-printer, as a single file. f90ppr.1, The corresponding man page. f90pp, The command-line interface for Unix to Fortran 90 pre-processor and pretty-printer, by Michael Steffens. f90split.f90, Fortran 90 free source form equivalent of the well-known fsplit utility for splitting large files into separate ones for each procedure. f90tops.f90, Fortran 90 free source form to PostScript converter, marking indentation in the margin. f90aib.f90, Interface bloc generator for Fortran 90 (alpha version). It is based on f90ppr, so output and input form may be controlled with the same macros. obtfmt.f90, A simple program that, given a st......

阅读全文(4604) | 评论:0

近日在讨论fortran的MDI程序开发!(2006-04-04 14:46:00)

摘要:前几日看VC++突然觉得非常熟悉,原来CVF也是用IDE来开发的。所以原来考虑要用vc做一个windows GUI 程序,现在决定改用cvf来做了。

但是,目前能看到的关于cvf做窗口程序的介绍比较少,经过我的初步测试,发现vf的windows编程与VC++的程序写法差不多,所以在不影响执行效率的前提下,我认为使用VF做窗口界面的开发也应该是可行的。 后面将会进一步开发这个程序。。虽然是个很简单的过程,但是我相信应该是比较新的内容,而且这个东西适合学过或者说熟悉VC的人去做。 相关的讨论进展见论坛: http://www.programfan.com/club/showbbs.asp?id=151611......

阅读全文(2628) | 评论:0

Delphi 与 FORTRAN语言的混合编程 (2006-04-04 14:36:00)

摘要:  转载按:这里 仅介绍一种思路,就是混合语言编程的思路,虽然本人并未学习Delphi,但是希望这种过程和思路能对程序开发有一定的帮助!! 众所周知,FORTRAN强于数值计算,尤其是如果计算主要针对复数进行,则FORTRAN更有无可比拟的优势。FORTRAN是所有语言中唯一将复数定义为一种标准数据类型的语言。但是FORTRAN语言在可视化程序设计方面是非常欠缺的,至少目前还没有一家厂商推出具有RAD特性的FORTRAN编译集成开发环境。因此,当用FORTRAN实现了一种大型的科学计算以后,却难以将这种计算转变为数据输入简易、结果显示方便的WINDOWS可视化应用程序。这一点,采用Delphi很容易实现。因此,在许多情况下,使用FORTRAN和Delphi的混合编程可同时具有二者的优点。 本文采用两种不同的方法来实现混合编程。一种是直接执行可执行文件的方式,一种是调用动态链接库中子程序的方式。在第一种方式下,在Delphi程序设计中直接执行FORTRAN程序的执行文件,通过文件来进行数据交换;在第二种情况下,首先将FORTRAN程序编译成动态链接库(DLL),在Delphi程序设计中,调用此动态链接库中某个子程序来完成某项计算。这两种方式各有优缺点。第一种方式的调试较为简单,不存在不同语言之间的数据类型的不匹配问题。但是,这种方式下,在Delphi中无法实现对程序运行的有效监督,同时,以文件进行数据交换在操作中也不太方便,效率也不高。第二种方式则整合了两种程序之间的差别,如果编制成功,程序运行时看不出混合语言编程的痕迹,但是这种方式调试起来特别麻烦。一般说来,对于已有的输入输出较为复杂的FORTRAN程序,可以考虑第一种方式,而对于相对简单的,或者自己着手编制的新的程序,可选用第二种。 1.执行可执行文件(exe)方式 Windows中提供了API函数WinExec来执行存在的执行文件。该函数定义为: UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow ); 参数说明如下:
        LPCSTR lpCmdLine: 包含要执行的命令行。 系统将在以下范围查找应用程序:
   &nb......

阅读全文(3737) | 评论:0

[Delphi]Winsock API 编程介绍     (2006-04-04 14:35:00)

摘要:作者:太子
email: tablejiang@21cn.com
page:  http://wolfftp.51.net 相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程
中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可
以直接使用Winsock API来写网络应用程序,但是,要写出优秀的网络
应用程序,还是必须对TCP/IP协议有一些了解的. 1. TCP/IP协议与Winsock网络编程接口的关系. 在开始之前,我们先说一下Winsock和TCP/IP到底是什么关系. 我碰到很多人问我:怎样使用Winsock协议编程? 其实,这话说的有点
错误,Winsock并不是一种网络协议,他只是一个网络编程接口,也就
是说,他不是协议,但是他可以访问很多种网络协议,你可以把他当作
一些协议的封装.现在的Winsock已经基本上实现了与协议无关.你可
以使用Winsock来调用多种协议的功能. 那么,Winsock和TCP/IP协议到底是什么关系呢?实际上,Winsock就是
tcp/ip协议的一种封装,你可以通过调用winsock的接口函数来调用
tcp/ip的各种功能.例如我想用Tcp/ip协议发送数据,你就可以使用
winsock的接口函数send()来调用tcp/ip的发送数据功能,至于具体
怎么发送数据,Winsock已经帮你封装好了这种功能. 2.TCP/IP协议介绍 现在来介绍一些tcp/ip的原理.tcp/ip协议包含的范围非常的广,他
是一种四层协议,包含了各种,硬件软件需求的定义,我们这里只介绍
软件方面的知识.tcp/ip协议确切的说法应该是tcp/udp/ip协议. udp协议(User Datagram Protocol 用户数据报协议).是一种保护消
息边界的,不保障可靠数据的传输.
tcp协议(Transmission Control Protocol 传输控制协议).是一种
流传输的协议.他提供可靠的,有序的,双向的,面向连接的传输. 3.保护消息边界和流 那么什么是保护消息边界和流呢? 保护消息边界,就是指传输......

阅读全文(8808) | 评论:4