当前位置: 首页 > news >正文

开源科学计算语言Fortress

3s领域,尤其是gps, rs里,很多的庞大的计算功能,如果用通用编程语言,如c,c++,java,实在是离业务太远,用matlab,fortran等,又不好集成。

Sun又有开放源代码动作,这一回是广邀各界协助打造一种称为"Fortress"的全新程序设计语言。

Sun日前悄悄把原型Fortress"解译器"(interpreter)发布为开放源代码软件。解译器是一种程序设计工具,用来逐行执行Fortress程序。

Sun实验室计算机科学家兼Fortress项目领导人Eric Allen说:"我们设法邀请学术界人士及其它第三者共襄盛举。"

Sun希望以Fortress取代50年前在IBM诞生的Fortran程序设计语言。Fortran至今仍活用于高效能计算机运算任务,例如气象预报。

尽管Fortress脱胎自美国国防部的超级计算机赞助计划,但也处理主流的运算问题--更轻易地促使多核处理器内的新型处理器引擎提高性能。

Allen说:"随着多核运算对一般桌面系统的重要性提高,程序设计师必须转用 Fortress这类语言,以便利用硬件性能。"

英特尔与AMD目前生产的主流x86芯片具有双重或四个处理核心,Sun的Niagara芯片拥有八个核心,不久后将提高到16个。然而,软件却难以分割成各自独立的片断、在那些核心当中平行运作,或越跨多重处理器运作。

Illuminata分析师Gordon Haff说:"对一些类型的工作负载(workload)来说,PC业做得不错。Google就是平行运算的问题。有些工作负载调节得很好,但许多则不 然。从那些工作负载榨出平行运算,是长久来的计算机科学问题。程序已有,但距离解决问题还十万八千里远。"

Sun希望Fortress有助于解决此问题,让开发人员能以在多核心平台上运作更佳的方式撰写程序。

例如,Fortress程序设计人员必须明确表明什么时候软件不应平行执行,这跟一般的预设作法相反。当Fortress程序执行"for"循环 (loop)--一项重复的任务--Fortress就会自动把这项任务分割成几个片段,并把每一段派送到不同的核心、处理器或服务器去处理。

Fortress也试图以智能方法存储数据,以便数据在需要使用时可就近在处理器附近获取。Sun认为,这对由独立服务器通过高速网络组成的大型计算机丛集(clusters)而言,尤其有用。

然而,RedMonk分析师Stephen O'Grady说:"要吸引大批程序设计师转用那个语言,非常难。"

采用开源的方式,是吸引新程序设计人员的自然选择。近年来,PHP、Python、Perl和 Mono等新语言都有开源底子。就连Sun的Java也已成为开源软件。

但O'Grady说,Fortress的未来可能变成"极小众化"(extremely niche) 。

Sun的Fortress解译器根据开原码BSD授权发布。但正式版Fortress的控制权仍掌握在Sun手中,所以,至少目前外部程序人员必须把他们贡献的程序交由Sun控制。

Fortress目前只初具雏形。Sun去年9月发布alpha版Fortress语言格式,但尚未拍板定案。而且,解译程序也在初步阶段。

未来,Sun希望除了打造解译器之外,也打造编译器(compiler),以便事先把软件译成某种计算机能解读的形式。编译软件通常执行速度比解译器快。

另外,Sun希望将来也推出最佳化的编译器(optimizing compiler),此技术可在软件执行时调整软件的编译版,以便改善效能。

相关文章:

  • java范型简介
  • 敏捷软件开发实践-Sprint Retrospective Meeting(转)
  • WebSocket桌面客户端工具
  • docker与虚拟机性能比较
  • 匿名方法实现多线程同步到主线程执行
  • 又无题
  • 关于数据库自我描述功能的构思
  • POJ 3648 Wedding(2-ST)
  • topcoder srm 460 div1
  • ssh-agent
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 基于原型链劫持的前端代码插桩实践
  • Java动态代理机制——那些让你面试脱颖而出的技能 推荐
  • python正则表达式的使用
  • Nginx配置SSL实现服务器/客户端双向认证
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 「译」Node.js Streams 基础
  • Angular 4.x 动态创建组件
  • CAP理论的例子讲解
  • JavaScript-Array类型
  • node和express搭建代理服务器(源码)
  • scrapy学习之路4(itemloder的使用)
  • Web设计流程优化:网页效果图设计新思路
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 区块链共识机制优缺点对比都是什么
  • 深度学习入门:10门免费线上课程推荐
  • 使用 QuickBI 搭建酷炫可视化分析
  • 首页查询功能的一次实现过程
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • puppet连载22:define用法
  • ​iOS安全加固方法及实现
  • #1015 : KMP算法
  • #Lua:Lua调用C++生成的DLL库
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (分布式缓存)Redis哨兵
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (一)为什么要选择C++
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)Linux 多线程条件变量同步
  • .NET CLR基本术语
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET分布式缓存Memcached从入门到实战
  • .NET是什么
  • /etc/sudoers (root权限管理)
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具