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

外贸企业论坛网站建设提升网站排名

外贸企业论坛网站建设,提升网站排名,织梦自定义表单做网站在线留言,seo的工具有哪些很奇怪不是#xff0c;很少有人每天都使用函数式编程语言。如果你用Scala#xff0c;Haskell#xff0c;Erlang#xff0c;F#或某个Lisp方言来编程#xff0c;很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python#xff0c;Ruby#xff0c;Java或C#等面…很奇怪不是很少有人每天都使用函数式编程语言。如果你用ScalaHaskellErlangF#或某个Lisp方言来编程很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像PythonRubyJava或C#等面向对象的编程语言——它们用起来很顺手。不错你也许会偶然用到一两个“函数式语言特征”例如“block”但人们不会去做函数式编程。 然而很多年来我们一直被教导说函数式编程语言很好很棒。我仍然记得当我第一次阅读ESR的著名的关于学习Lisp语言的论文时的困惑。也许大多数的人对Paul Graham 的《Beating The Averages》这篇文章更加熟悉 使用Lisp开发使我们的开发周期迭代的如此之快以至于有时当竞争对手在新闻发布会上推出他们的新功能一两天后我们就能复制出同样的功能。当报道产品发布的新闻记者打电话给我们时我们的产品已经拥有了同样的功能特征。 那些皈依函数式编程的人中一直常见的考虑是学习这种新的、函数式的语言“对你有好处”就像是某些人建议说每天30分钟的健身房活动会“让你的身体健康”一样。但这也同时暗示了这样做的难度和需要的付出。Lisp语言跟Haskell、Ocaml和Scala语言不同被认为是出了名的难学可以说是臭名昭著。文雅的人说这是Lisp语言的“深度广度”的体现。不文雅的人说这是“意淫”或“玩弄学术”或简单的“没必要”。我认为它的难度跟你对它熟不熟悉有关而且这种难度是一种重要指标显示学习这样的一种语言会让你编程更有效率、能力更强。 它给你的初次印象不友善 我7岁时就开始编程在漫长无聊的郊区夏季里在我祖父的计算机上瞎搞一气。我学了BASIC用它在屏幕上画一个蹦跳的球。我学了Pascal用它写了一个能通过PC喇叭放音乐的程序。大概10岁时我学了C语言但遇到了一堵越不过去的墙直到我上了高中。那就是指针。即使不算这些该死的指针我写、读、学习、练习中同样遭遇无数的失败。我把祖父的硬盘给毁掉了两次(一次属意外)最后弄得不少次要自己重装操作系统。我失败一遍遍的失败。 也许你也有跟我相似的故事也许是完全不同的一个。但我想差不多所有学过编程的人都有过遇到困难的经历。我们在学了一些基本知识后必然会遇到一些公认的概念上的关口比如“指针”。很多计算机科学教授会把指针描述为他们课程上的过滤网。如果你想成为一名优秀的程序员你必须要能理解指针。很少人能轻松的掌握它们。大多数人包括我则需要不断的练习和参考例子来理解什么是指针、为什么它们很重要。 这种艰难的努力过程不是偶然的是一种几乎普遍的现象。指针是一种非常强大和基础功能的概念。学会它能让你成为一名更好的程序员能让你的思考更加形象化。即使你使用的语言并不提供指针这样的特征但跟指针类似的数据结构和概念却随处可见。 新奇事物 一旦你学会了几种语言后所有的语言都开始看起来都很相似。知道Python的人学习Ruby可能不会遇到太多的问题知道Java的人学习C#会感到很熟悉。不错也有意外的地方。Ruby爱好者在学习Python时会对它的comprehension感到吃惊Java用户会对C#里的委派摸不着头脑。还是那句话如果你只瞟一眼它们都很相似。我可以打保票的说如果你还不曾有过这样的认识一旦你学了一种Lisp语言你会发现所有的Lisp变种都很相似。 有人说大部分人第一次使用Haskell或Ocaml时都完全的不知所措。见鬼了在Haskell里连分号都跟别人不一样。这并不是语法的问题Haskell和ML语言完全基于一种不同的概念、一种新的语言范式。你需要用不同的方式开发应用不同的方式组织应用不同的方式扩展应用。 很多这样的新概念都具有不可思议的强大力量。Haskell里的Monads 是跟指针一样基础且强大的概念(你很可能在不知道它叫什么的情况下就已经使用过它们了)。所以跟学了Java后再学C#不一样有志向学习函数式语言的人需要往回走的更远去学习更加基础的概念后才能接下去学习。就像是完全再学习一次指针。并且就像是当年我们刚开始学习编程一样一些很大的概念看起来会让人迷惑茫然让人沮丧直到你去攻克(以及失败)它们。 吃下你的药丸找到你的药剂师 尽管不好学但我坚信学习这些函数式编程语言会在职业上对你有好处。我相信有些人读到这点时会眼睛翻起来向天看很难想象出这些monoids 或 monad 会对他们在使用Java或C#时有用处。对我而言我已经不惊奇于由于这样的思维而阻止他们学习函数式语言的现象他们需要学习一种跟指针和递归一样基础的新概念。他们需要有一种只有专业人员在完成清晰的商业目标时才具有的耐心和斗志。很少人能在过了可塑的年龄后还受得了挫折——一次又一次的挫折——否则我们现在都早成专家了不是吗 还有更复杂的东西有大量的语言和算法研究都是用函数式语言实施的(尤其是Haskell)。你很容易会被这些不熟悉的概念——例如范畴论 half-finished abstractions一些失败的研究——弄的迷失方向。没有一个清晰的指导(比如由一个实用主义的作者写的一本好书)本来已经很困难的学习任务变的更加可怕。 这些叠加起来的复杂因素导致了不出意外的结果很多人不情愿在函数式编程学习中投入时间。很容易理解这种不情愿“我干嘛不把花在学习这些东西的时间用在实现什么东西上呢”但这种思路也表明了你永远不愿意在任何新技术上浪费时间(只用自己熟悉的)。在一个像软件技术这样日新月异的产业里我不认为这是正确的判断。 眼见为实 学习一种函数式编程语言最显而易见的好处是你能学会这种类型语言中的函数式概念。它能帮助你的大脑让它具有能非常清晰的思考和处理一些惊人的重大概念的能力。这并不是函数式编程具有魔法各种语言和范式的出现都是为了应对某一特定类别的问题。函数式编程的杀手锏正是应对了当今世界上日益增长的并行性编程和元数据编程趋势。 例如我们研究一个简化的、本地版本化的Google著名的MapReduce范例。用函数式方式描述这种范例是不可思议的清晰简洁 mapReducer data partitioner mapper reducer let partitions partitioner datain reduce reducer (map mapper partitions) 让这样的代码支持并行计算或分布式并行计算是轻而易举的(对于本地并行计算很多的功能包都支持“pmap”和“preduce“——只需要利用函数式语言的一些简单特性)。像maps, partitions, generators, streams, reductions, folds, 已以及 function chaining等概念在各种的函数式编程语言中都大同小异所以任何对LispHaskellOCaml甚至带点函数式语言特征的语言——Python和Ruby熟悉的人都会很容易的理解这里面的思想精华。 让我们花点时间考虑一下如何用一种面向对象的语言以一种常见的面向对象的模式来清楚的描述这种架构。至少你需要做的事情是定义用来描述mapper和reducer的声明。如果你有好奇心请试着用你喜欢的面向对象语言描述一个最小化的“面向对象”的MapReduce。我发现那是非常罗嗦的。如果使用Java风格的语言它会像这样 interface Mapper {B map(A input);}interface Reducer {Y reduce(X a, X b);}abstract class MapReduce {private Mapper mapper;private Reducer reducer;public MapReduce(Mapper map, Reducer reduce) {// ...}public run(SeqenceType data) {// ...}} 即使是没有加入循环逻辑这种缺乏函数式模式中常见的名词和动词的使用使得MapReduce这种技术很难被定义。这种定义方式几乎是滑稽可笑的但它能让你想到函数式概念。另外一个好例子是Scala语言如何利用完备的Java Fork/Join 类库把它轻松的集成的自己的自有语法中。 各有所求 所以我鼓励任何想进步的程序员请考虑学习一种函数式语言。Haskell和OCaml都是极好的选择F#和Erlang也相当的不错。它们都不好学但也许这是个好事。努力弄清楚你遇到的复杂的概念看看是否有其他人正在利用这些概念经常的你会在寻找这些不熟悉的概念的真正用意的时候实现思想上的突破。 当你开始学的时候请注意不要过于在意。就像其他任何需要你花时间和精力的事情一样过度的在函数式编程上进行精力上的投资是很危险的。掉进了认知能力的陷阱后你的投资会血本无归。你很容易会忘掉世界上还有无数种计算模型你更容易忘掉有多少种优秀的软件根本没有使用任何的函数式概念。 学习的道路会越来越难走但从另一方面说在你日常的编程中你会发现有越来越多的可以使用的重要概念和模型。对于这样紧凑的编程风格你会越来越适应必然你也会对如何成为一名更好的软件工程师有了新的认识。 补充 有不少校对这篇文章的人在看完文章后都问了我一个同样的问题“听起来不错大卫可是我应该学习那种语言呢”当然这是他们给我出的难题。 我想如果你是一个很有经验的程序员这最能“应付”这个问题的答案是“选一种符合你的需求的”。如果你需要在JVM上工作选择Scala或Clojure。如果你想能快速的开发大型分布式软件系统选择Erlang。如果你想要一种具有超强编译器的超能干活的语言请选择Haskell或RCaml。如果你想要一种比Ruby或Python更有能力的原型工具选择Scheme。 请记住我们在这里要做的这些目的是为了实际的技能和自我进步。如果你能腾出时间学这些就走出你的安逸环境挑战自己。 因为我已经学习了Lisp和Erlang而且使用OCaml做专业工作我决定研究一下Haskell这完全是另外一个世界。我发现唯一能帮助我参透这种语言的途径是依赖Learn You A Haskell 和 Real World Haskell 这两本有用的指导材料。这些书写的非常好很有价值而且可以免费在网上找到。如果你想试一下Haskell这些书可以当作你的寻宝图。
http://www.yutouwan.com/news/373724/

相关文章:

  • 茂名营销型网站制作公司成都设计网站
  • 网站按钮psd网页设计网络培训
  • 安全网站建设情况网站开发和美工的区别
  • 网站标题有什么作用wordpress 评论 html代码
  • 网站软件设计硬件开发需求
  • 怎么能自己创建网站花瓣网是仿国外那个网站做的
  • 适合站长做的网站上海做网站的价格
  • 中文网站模板下载兔展制作h5页面模板
  • 医疗器械网站素材企业网站备案怎么填写
  • 易利购网站怎么做wordpress怎么建栏目
  • 如何查网站的外链电脑自己做网站可以吗
  • 网络营销案例分析与实践咖啡seo是什么意思
  • 展板模板网站湖南网络广告策划推广
  • 服装设计网站有哪些推荐活动策划流程及细节
  • 长春个人做网站哪家好简约大方网站
  • 建筑工程招投标网站天水市秦州区作风建设年网站
  • 深圳网站建设-猴王网络手机网站生成工具
  • 2017建站企点怎么群发消息
  • 青岛开发区做网站设计的优化方案生物必修一答案
  • 长春火车站停车场收费标准wordpress添加关键词插件
  • 佛山门户网站建设做神秘顾客哪个网站好
  • 手机网站html声明在线ps图片编辑器
  • 如何做服装微商城网站泰兴网站建设公司
  • 首都航空公司官方网站企业名录app
  • 网站开发项目名称成都网站平面设计
  • 网站突然找不到了 然后降权重 排名不变wordpress图片横向
  • 网站流量分析报告河南网站怎么备案
  • 网站建设互联建设大型的企业网站费用
  • 做下一个盗版小说网站wordpress个人博客安装
  • 我的世界电影怎么做的视频网站怎样做自己的网络平台