`

来自网络的有关实验室语言与工程性语言的精彩论述

阅读更多

来自网络的有关实验室语言与工程性语言的精彩论述

原文出自groups.google.com/group/pongba/msg/7d2d93586f10bb6f的google缓存

在 2010年4月25日 下午12:54,Alleluia <allul...@gmail.com>写道:


 仅说GHC,那是小看它了.没有Haskell,可以有C,有Java,有Ruby,有Python,但是不会有C# Scala D.Haskell 的老大被MS收在了MS Cambridge,于是C#现在已然是半个Haskell.Linq直接来自于Monad, Extension  Method直接来自于Haskell Class.于是你可以看到从语言特性本身来说,高司令领导下的Java寸步不前,而C#每一次翻新都是脱胎换骨.Scala的火热从另外一个侧面也说明了,程序员社区对Type inference这种技术的高度需求,也说明了程序员社区对Java这种固步自封的不满.你们不搞,我们自立根生.

> Haskell有没有用,要不要学?这个问题对于不同的人来说有不同的答案.如果你致力于程序语言本身的开发和研究特别是现代的程序语言技术,Haskell是必学的.如果你是普通的开发人员,不学不影响你的工作和生计.但学了可以让你看到更多更超前的东西.Fortran,Lisp,Haskell是程序语言理论的三个奠基之作.有了Fortran,才会有结构化面向对象,有了Lisp,才会有GC,Lambda.有了Haskell,才有Type inference.程序语言的发展总是从理论研究再到工程实践.理论研究的工作就是着眼于能行性,而工程实践的目的在于如果将能行的理论转化为在当前软硬件条件下可用的工具.工程实践总是要比计算机科学的理论慢上10-20年,这是社会经济发展的局限。作为一个普通的开发人员,如果你只是关注当下的流行语言,那么无疑你是在疲于奔命.学院派的实验作品与工程语言有很大的不同,学院派的实验作品严谨纯粹,成体系,语言特性高度浓缩.而工程语言,鲜有自己的发明创造。他们则为了实践的需要,他们总是从各个地方抄袭借鉴。这里抄一部分C,哪里借鉴一点Java,再揉合一些Lisp,然后起一个花里胡哨的名字.就能培养一大批fans跟在他们后面狂欢.学院派的理论思想被打散在许许多多花里胡哨的工程作品里。一个普通的程序员可能需要学习4-5种语言,才能学完一个学院派作品就可以讲完的东西。学院派的东西的确枯燥,抽象,学习难度非常大,而且没啥实际的用途.但是如果你肯花一个工程语言2倍的的时间,去多看一些基础的理论,多学一点学院派的实验作品.你再回过头去看那些工程语言,浏览一下他们的FAQ就会知道这些特性应该怎么用,怎么理解.

> 当然学习实验性语言不仅可以省下学习的时间,更重要的是让你在工程应用中对语言特性的选择有更明确的判断。软件开发里很多程序员喜欢钻牛角尖,学会了OO恨不得所有的程序都OO,学会了Lambda恨不得所有的程序都FP.很多人说这是程序员的职业病,我却不以为然.我觉得这是人类接受知识的通性。
> 我们的学习就是在不断的试错,只有错误的结果足够的多我们才能在这些错误中总结教训,发现某种知识的局限获得新的知识.关键在于试错的成本有多大,在我看来仅仅学习工程语言试错的成本是非常高的.学习实验性语言的最大优势就在这里,一方面它非常的纯粹,通常会把一个语言特性的推到极致,比如像lisp.在你学习的过程中用它来尝试解决各种问题就快速会发现诸多的局限和问题,而工程语言总是给你许多不同的选择,OO不行可以用模板,模板不行用FP.如果试错次数到总结经验之间有一个阈值的话,那么无疑工程语言是把这个次数摊薄了,你需要更多的时间和工作才能发现问题的所在。另外一方面,工程语言往往专注于一个领域,甚至专门为某一种硬件或者软件平台而开发。而实验性语言更关注于各种领域内普遍出现的共同性问题,它会抽掉具体硬件软件背景,把他们共同的问题抽象出来讨论甚至加以形式化比如GC,Type inference。也就是说你会在实验性语言中看到你专业领域内所看不到的东西.一个语言特性在某个领域内是圣经,在另一个领域内却是毒药。如果不去学习实验性语言,对于这种语言特性的局限认识需要你在大量不同的领域中试错才能获得。

> 我们经常说,学习一门技术不是目的,目的是用这个技术去解决问题。如果我们狭隘的理解这句话,那么Haskell这些实验性的语言自然没有什么意义。但是在我看来,语言的学习本身就是一种问题。而学习Haskell Lisp的目的恰

分享到:
评论

相关推荐

    网络工程实验报告

    南理工网络工程实验报告,包括网络工程基础、局域网配置、广域网配置以及网络安全实验

    实验室设备管理系统(软件工程试验完整版)

    实验室设备管理系统是一个完整的软件工程试验项目,涵盖了软件开发的整个过程,从项目管理到编码和测试。系统的主要功能包括设备管理、设备维修、设备购买和设备报废等。通过对系统的需求分析、概要设计、详细设计和...

    网络工程实验室教师手册.doc

    《网络工程实验室教师手册》是针对大学网络实验室的教师们设计的一份操作指南,旨在帮助教师熟悉和掌握网络工程实验室的设备操作与管理。手册详细介绍了如何使用远程配置管理系统(RCMS)以及基础实验中的交换机配置...

    哈工大计算机系实验室介绍

    3. **计算机网络与信息安全实验室** 在网络安全日益重要的今天,这个实验室致力于研究网络协议、网络安全技术以及隐私保护策略。他们的研究成果在网络安全防御、信息加密和安全传输等方面发挥了重要作用。 4. **...

    网络虚拟实验室.docx

    网络虚拟实验室是一种基于互联网技术,能够实现远程访问与控制实验设备的新型实验室形态。它采用BSDA(Browser/Server/Database&Application)架构,由客户端、Web服务器、应用服务器以及实验设备四个核心组件构成...

    中国科学技术大学6系实验室介绍信息.docx

    生物医学工程实验室主要研究生物医学工程领域的新技术开发及新方法的研究,特别是与超声电子学有关的生物医学新技术的开发,生物医学信号的检测及处理、声成像技术及声图象处理,网络及多媒体技术的应用,PACS 医院...

    网络安全攻防实验室方案.pdf

    在信息科学与工程学院的网络安全攻防实验室建设方案中,我们可以看到该实验室的建设是为了满足网络安全人才需求的增长。以下是从该文件中提取的知识点: 一、网络安全现状 * 网络安全是一种国家安全的重要组成部分...

    物联网工程实验室解决方案.ppt

    物联网工程实验室解决方案旨在提供一个全面的教育环境,让学生能够掌握物联网(IoT)的最新技术和实际应用。这个解决方案由飞瑞敖企业设计,覆盖了物联网的三个主要层次:感知层、网络层和应用层,确保学生能够学习...

    CAD网络实验室的建设与管理.pdf

    由于CAD技术的实践性非常强,传统的工程制图实验主要依靠绘图仪器和工具完成,而CAD网络实验室能够提供一个更加高效、精确的实验环境,以支持CAD技术的教学与实践。在实验室建设与管理方面,面临着许多问题和挑战。...

    中南大学网络工程实验报告

    中南大学网络工程实验报告,SNMP网络管理系统包含三个组成部分:①管理信息库(Management Information Base, 简称MIB)。②管理信息结构SMI(Structure of Management Information, 简称SMI)。③简单网络管理协议...

    基于工程能力培养的电子信息类实验室开放和开放性实验教学模式的构建.pdf

    【标题】:基于工程能力培养的电子信息类实验室开放与开放性实验教学模式 【描述】:本文探讨了如何构建一个以提升学生工程能力为目标的电子信息类实验室开放和开放性实验教学模式,强调实验室管理机制的完善、多样化...

    实验室管理系统

    实验室管理系统是一种专为科研教育机构...通过以上分析,我们可以看出,"实验室管理系统"是一个综合性的项目,涵盖了软件工程的多个方面,利用C#编程语言可以实现高效、稳定的系统开发,满足实验室管理的多元化需求。

    论文研究-虚拟实验室的类型及发展趋势.pdf

    虚拟实验室是一种利用计算机技术和网络技术创建的虚拟实验环境,允许用户在计算机上进行实验操作,突破了传统实验室的空间和时间限制。它具备开放性、交互性和沉浸式体验等特性,适用于教育、科研、工程等多个领域。...

    网络实验室服务于CAD教学的研究.pdf

    在实验室的多媒体教学网络系统中,学生可以进行绘图、数据处理和模拟实际工程效果等操作,这些实践性教学环节不仅提升了学生的操作技能,也激发了他们的创新意识和解决问题的能力。 随着网络技术的不断发展,网络...

    Java语言程序设计-实验指导2023版.pdf

    Java 语言程序设计实验指导(2023 版) 本资源摘要信息是根据《Java 语言程序设计实验指导(2023 版)》文件的内容生成的知识点。 实验说明与要求 在进行 Java 语言程序设计实验时,需要注意以下几点: * 实验课...

    [软件工程形式化方法与语言].李莹.吴江琴

    软件工程形式化方法与语言是计算机科学领域的重要分支,它主要关注如何使用严格的数学方法来定义和分析软件系统,以减少开发过程中的不确定性和歧义。本书由李莹和吴江琴编著,由浙江大学出版社出版,是一本系统介绍...

    物联网工程实验室解决方案.pdf

    首先,物联网工程实验室的核心是硬件设备和传感器网络。这些设备包括各种微控制器、无线通信模块(如Wi-Fi、蓝牙、LoRa等)、传感器(温度、湿度、光照、运动等)以及执行器,它们构成了物联网的基础架构。实验中,...

    网络工程设计实验指导书

    以上实验指导书中的知识点涵盖了网络工程设计的基础操作和技术要点,包括物理层的网络布线、局域网的搭建与测试,以及数据链路层的交换机配置与优化。通过这些实验,学习者不仅能够深入了解网络工程的理论知识,还能...

Global site tag (gtag.js) - Google Analytics