学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学习一个又一个的语言。 对程序语言的各种误解 学习程序语言的人,经常会出现以下几种心理,以至于他们会觉得有学不完
学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学习一个又一个的语言。 对程序语言的各种误解 学习程序语言的人,经常会出现以下几种心理,以至于他们会觉得有学不完的东西,
我在滑铁卢大学的最后一个学期选了CS444:编译原理这门课程,课程项目是编写一个编译器,将Java语言的子集编译成x86代码,三人结组,语言自由选择。
Kotlin 的 internal 是一个比较有用的访问控制关键字,特别是当你开发一些 SDK 给别人用时,有些类的 API 只能为 public 却又不想让外部访问到你就会发现 internal 有多么有用了 —— 只是实际情况有点儿事与愿违,internal 关键字修饰的成员在被编译成 jar 之后,Java 仍然可以无所顾忌的访问这些成员,除了名称有些奇怪。这可怎么办。小伙伴们就炸了,于是一向特立独行的冰冰给出了自己的方案。
我曾在某处读到过(可能在《代码大全》,但我不敢确定),程序员应该每年学习一门新的编程语言。但如果做不到,我建议,你至少学习以下5种开发语言,以便你在职业生涯有很好的表现。
由于程序员工作的性质,他们长期以来受到的所谓“黑客”式的“熏陶”,形成了一种行业性的心理疾病。患了这种病的人对于很多新入行的人,甚至一些外行人士造成了持续的伤害。慢慢的,这些不幸的受害者也形成了“条件反射”,进而成为了这个心理变态的系统的一部分,导致越来越多的人,越来越快的变成“怪胎”。这是一件可怕的事情,所以我觉得有必要警醒一下。
烹饪让爱变得可见,不是吗?确实!烹饪也许是你的热情或爱好或职业,我相信你会维护一份烹饪日记。保持写烹饪日记是改善烹饪习惯的一种方法。有很多方法可以记录食谱。你可以维护一份小日记/笔记或将配方的笔记存储在智能手机中,或将它们保存在计算机中文档中。这有很多选择。今天,我介绍 HeRM's,这是一个基于 Haskell 的命令行食谱管理器,能为你的美食食谱做笔记。使用 Herm's,你可以添加、查看、编辑和删除食物配方,甚至可以制作购物清单。这些全部来自你的终端!它是免费的,是使用 Haskell 语言编写的开源程序。源代码在 GitHub 中免费提供,因此你可以复刻它,添加更多功能或改进它。
我在刚想接触haskell,找到课程资源在搭环境时遇到了stack版本过低和网络的问题(貌似)。
在关于软件质量的相关谈论中,我通常会引用一条经验法则。所以,我决定发帖总结一下。我将其称为“软件质量的黄金准则”,因为它简单明了,并且可以广泛使用。
最近有空就在看Haskell,真是越看越觉得这个语言有意思。在知乎(原回答@阅千人而惜知己的)找到了一份很有意思的求素数代码,非常简洁,我觉得很能体现这个语言的特点。
本文最初发布于 Foxhound Systems 网站,经授权由 InfoQ 中文站翻译并分享。
在上一篇文章中,我通过几个Java的例子简单的说明了Monad的本质和一些工程中常见的用途。接下来的文章就不再侧重于工程了,而是要慢慢向理论转换。而作为过渡,我选择了Haskell来代替Java进行说明。本篇文章默认读者已经对Haskell的基本语法有所了解,因此对此类内容我不会再做赘述。
一定要注意格式 第一行很重要,-- |这行没有就不是一个 test。 可以对比 >>> 的个数 和 terminal里的 Examples 个数确认是否自己的所有 test 都测试了
image.png 我们每个人都知道程序员的工作是写代码,那究竟什么是写代码? 如果非要对给程序员的工作做一个比喻的话,在社会上最接近程序员工作的是翻译,只是平日的翻译是针对人和人,而程序员针对的是人和机器。浓缩成一句话形容程序员的工作的话,那就是:把人类的需求告知机器。 当我们用电脑用手机在玩游戏或者上网时,做的其实都是对计算机程序的交互。一个例子能讲清楚很多事情。我们定义此时此刻正在阅读这行字的人—你,为『加法』,意思是我们强迫你大脑放空,除了加法不要(也不能)去思考任何其他的内容,你的工作只有在遇到
接上文 《从 Java 和 JavaScript 来学习 Haskell 和 Groovy(引子)》。
Haskell是一种纯函数式语言(purely functional programming language),其函数式特性的纯度没有争议
80年代末,我第一次接触了Apple II电脑上的BASIC编程语言,从此走上了一条程序人生。十多年前我在博客园上开通了自己的博客,由于下象棋时经常出点“毒”招,所以网名干脆就叫“毒龙的程序人生”,2
说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了。这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐。
接上一篇《听君一席话,如听一席话,解释解释“惰性求值”~》,有掘友问:“我懂惰性求值的意思了,但是在 JS 中如何实现 thunk 的呢?”
选自知乎用户:https://www.zhihu.com/question/284549387/answer/451018336
我本科学的是国际贸易,乱选的专业。毕业后做了半年外贸,实在不喜欢,然后去做英文编辑了。第二份工作也很无聊,就是写英文软文,发表在国外的行业期刊上,给公司做广告。然后也做英文官网的内容。这是一个很没创意的工作。每天在一堆不利数据里找个别利好数据,包装一下,忽悠人。最重要的是,这份职业里我找不到持续精进的方向,做一年和做三年好像区别不大。 后来学前端也是误打误撞。因为我同时在做英文官网的内容和产品,会和前端打交道。当时公司的前端是学 UI 转过来的,我观察他的工作,以为就是 HTML 写个页面结构,然后 CSS 做个样式,然后用 JS 做点效果就可以了。这个简单啊,我也可以做。然后我就裸辞去学习前端开发了…… 后来发现我错了,但是自己跳的坑,流着泪也要爬出来。接下来我经历了人生中最难熬的一段时间,也经历了人生中第一次大的转变。 我从 2017 年年初开始高强度学习,去年十一假期之后开始我的第一份前端工作,到今天刚好工作一年时间。接下来我将我的学习路径,学习方法,和学习资源整理分享出来,希望可以帮到更多人。
ThoughtWorks的「TW洞见」在4月发布了对Scala之父Martin Odersky的访谈。Odersky的回答显得言简意赅,仔细分析,仍然能从中收获不少隐含的信息(虽然可能是负面的信息)。 提问的中心主要是语言之争。Scala是一门极具吸引力的语言,似乎天生具备一种气质,轻易能够吸粉,但招黑的能力也不遑多让。它似乎是从象牙塔里钻研出来的,但又在许多大型项目和产品中得到了实践。有人转向了她,又有人之后背弃了它。如果说Ruby的助力是Rails,那么推动着Scala在社区中成长的,其实到处可见Spa
最近开始学习 Scala,相较于学习 Haskell 的过程来看,Scala 真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的 Java 和 JavaScript 来逐步学习 Groovy 和 Haskell 的文章,这以后再来学习 Scala 的话,就可以不断比较了。如果和我一样有 Java 经验的话但是从来没有接触过 Scala 的话,建议先阅读这篇文章,A Scala Tutorial for Java Programmers,一边比较,一边熟悉,同时配套的还有这个,Scala for Java programmers – Joakim Ohlrogge & Enno Runne,Youtube 上的视频,很直观,然后再从 Scala 官网的文档上面逐步涉入。
嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师?
当你想学编程但不是特别关心找工作的时候,选哪种语言学完全取决于你自己的目标、兴趣和能找到的学习资料。一个很重要的点,别只学一种语言啊!毕竟,"门门都懂,样样皆通",每种编程语言都有自己的优点和适合的用途,多学几种可以让你的思维更活跃,同时也更有趣,还能拓宽你的视野。
铁打的程序员,流水的编程语言。时代在发展,编程语言也与时俱进,不断有新的、更好或者更时髦的语言出现,程序员也会或主动、或被动去学习一门新的、”更好“的编程语言。
今天一大早排队挂号给孩子看病,耽搁了,现在才发。 说实话,『能花钱的,就不要花时间』是篇即兴之作,本该随着时间被有限的听众渐渐淡忘。但没想到前有 @老赵 微博转发,后有知乎日报鼎力提携,这篇文章火得一塌糊涂,一下子把我推到了风口浪尖。我其实想委婉地表达一个意思:程序员的时间很宝贵,只要有能用合理价格买来的用来提高效率的产品和服务,就不要花时间找免费或廉价的替代品。但显然还是被不少人误读。不少人质疑的焦点放在了:『你是有钱了,可我们是屌丝,买不起正版软件,正版图书,盗版不也一样用么?』我没想到随手举的一个买正
英文原文:Functional Programming Is Hard,That's Why It's Good 很奇怪不是,很少有人每天都使用函数式编程语言。如果你用Scala, Haskell, Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python, Ruby, Java或C#等面向对象的编程语言,它们用起来很顺手。不错,你也许会偶然用到一两个函数式语言特征,例如block,但人们不会去做函数式编程。 然而,很多年来,我
没错,再正常不过的 myFucntion,依次声明了 result1、result2、resulit3 3 个变量,分别赋值为 longCalculation1(a,b)、longCalculation2(b,c)、longCalculation3(a,c),longCalculation1/2/3 顾名思义,是一些包含很长的计算过程的函数;
随着年度复工大戏的开播,编程界语言排行榜又要面临一次全新的洗牌,六大编程语言将要黄了!此消息一出,令众多程序员心碎!
如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` 实现
Haskell 值与函数是统一的,函数只是需要其他参数输入的值。如果定义的是函数,那么这个函数的行为在运行过程中也是不会改变的,对于某一个特定的输入返回的结果总是确定的,这样的函数为纯函数。
Scala简介和安装 本篇文章为大家介绍以下Scala和Scala的安装以及IDE(eclipse)的使用,虽然这个基本环境没有什么技术含量,但是基本环境做不好,往后探讨再高深的东西,都是白扯,这里的所有Scala使用都是在window环境下的。 ----------目录--------------------------------------------------------- 1.Scala简介和安装 2.Scala语法介绍 3.Scala的函数 4.Scala中的集合类型 --------
并不是所有编程语言都能经久不衰。事实上,新一代的开发人员会采用他们认为更容易使用的其他语言或框架,即使是最流行的语言也不可避免地会走向衰落。
我记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会:
又是一篇讲Pin的blog,是作者本人在学习Rust异步过程中做的一些总结和理解,方便大家在学习异步时遇到相关疑惑可以查阅。
semantic 库地址:https://github.com/github/semantic
本篇文章的话题是元编程。首先来认识元编程,我在第一篇 《引子》里面已经介绍:元编程,指的是在运行时改变 “类” 的定义,例如访问、增加或修改等等。一言以蔽之,就是 “用程序来写程序”。在第二篇的 《类型系统》里面已经借由继承和接口的实现,介绍了一些利用元编程特性来增加或改变子类行为的方法。回顾语言发展的长河,其实是经历了一个从 “对象 -> 类 -> 元类” 到 “对象 -> 原型” 的发展过程的。所以,无论是类,还是元类,这样的概念其实都不是非有不可的,只是因为我们思考的习惯,特别是抽象的习惯而顺其自然地产生了。这一点我在 《编程范型:工具的选择》里面已经详细描述了,建议在往下阅读前移步。
最近有点无聊,突然想试试在各种语言里面实现Y组合子。不过写完之后,没想到结果完全出乎我的意料。嘛,让我们来看看不同语言里的Y组合子。
(一) 软件领域有个叫格林斯潘的哥们,估计大家都不怎么熟悉,但下面这句话写过代码可能没几个不知道: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. 任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了。
本文作者是高级系统开发工程师 Torbear Gannholm。Torbear 有着 30 多年的开发经验,对技术很深刻的理解。对于什么是好的编程语言,他发表了一篇文章分享了自己的观点。以下是他的全文:
shell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同。
人工智能已成为我们日常生活不可或缺的一部分,它被广泛地应用到几百种实际场景中,极大地便利人们的工作和生活。
随着 Rust 语言的大火,前端圈里掀起了一股 Rust 风 —— 一切能用 Rust 实现的都在尝试使用 Rust 重写,比如最近很火的对标 Babel 的 JavaScript/TypeScript 编译器 swc,相信很多人都已经尝试过了。 对于我们前端来说,这么火的语言,当然不能放过了,必须跟上时代的潮流。 一、什么是 Rust Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的程序设计风格。 —— 维
《Scalaz(0) - 写在前面》介绍了函数式编程(FP)和面向对象编程(OOP)的概念,并讨论了它们在计算机编程领域的应用。文章还介绍了Scala语言中的函数式编程特性,并强调了Scalaz在函数式编程领域的重要性。
当.NET在2000/2001年第一次发布的时候,Java社区认为它仅仅是从语言以及标准库上对Java的一个“克隆”。我们把二者的简单实例代码进行比较以后就可以很轻易地得出这样一个感受。不过,微软从它多年的Java经验中获益匪浅,并且成功解决了一些Sun现在才后知后觉的问题。Java社区也有人开始认为,.NET和CLR要比Java发展得更加快速。Neil Bartlett称: 我认为微软在CLR上的创新速度更快是非常明显的。举例来说:LINQ就是一个极其强大的新特性(补充一下,它基于Haskell语言的mo
领取专属 10元无门槛券
手把手带您无忧上云