首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是怎样学习新编程语言的

这里的“终”就是目标,在软件工程中,有一种实践很好得反映了这种做事方式——测试驱动开发。...Elixir中有iex命令作为repl,而且这门语言深受Clojure的影响,尤其是文档和例子方面很充足,对于初学者再友好不过。...再说,学会用新语言的思维方式编程是我初始的目的之一。 这里举个例子,map的key使用哪种基本类型会比较合适?...Clojure中有keyword,如{:name "clojure"},而Python中并没有这样的数据类型,我只好使用{'name': "python"},那么Elixir呢?...既然如此,那么自然语言也好,编程语言也罢,如果能换种思维方式解决同一种问题,说不定能收获些奇奇怪怪的东西,编程之路,道阻且长,开心就好。

93830

elixir:灵丹妙药?or 徒有其名?

IO.puts(formatted_output) 这样的代码在Elixir中可以被写成: host |> Store.get_host |> to_map |> tabularize |> IO.puts...老娘/老子在Ruby里,或者在jquery中,经常这么写代码。。。 虽然pipe和chaining表述代码的方式有些类似,但背后的思想不太一样。...如果你不幸在工作中遇见if/else hell,再看过支持pattern matching的语言,你一定会泪流满面。 那么问题来了,当pipe遇见pattern matching是什么光景?...总结 做硬件的兄弟总是嘲笑我们这些写软件的笨蛋们 —— 当他们做的硬件能够不断以搭积木的方式自我累积,数十亿个晶体管组成的复杂系统可以bug free时,我们写的软件却糟糕得一塌糊涂。...原因有多方面的,如果从语言本身出发找原因,那就是语言本身并未让你以搭积木的方式组织系统。 那么,什么样的语言更容易贴近搭积木的组织方式呢?

1.5K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    对一门不是非常熟悉的语言是怎么面试的

    下一步就是在线的 Coding 了,这个在线的代码也是非常简单的,唯一麻烦的地方是 Elixir,因为从来没有接触过这个语言,突然在平台上要用 Elixir 这个语言还是有点懵逼的。...但是 Elixir 是一个函数式的语言,同时循环是不可变的,在这里哪怕是一个循环都要折腾半天。本着,既然我答应你回家试试了,那么我就抱着一定要做出来的想法来做的,也在规定的时间把代码提交了。...不是说,你今天开始看文档,明天就能全部看明白的那种。这个语言没有好的集成 IDE 开发环境,代码写起来不是那么友好,高级语言非常容易实现的东西,Elixir 需要比较多的步骤才能完成。...主要原因是,在投简历的时候没有仔细看看需要的语言,主要是看了 API 编程能力。通常来说,这个都不是什么问题。唯一感觉有点不好的是,公司方面对面试者的反馈比较差。...,在附件中有题目说明,测试数据和源代码。

    14430

    Elixir和OTP中面向过程的编程指南

    前言 这篇文章感觉介绍语言是次,讲解各种各种分类以及面向过程的思想为主。本身我也没接触过Elixir,这次也权当开拓视野了。最后附加了一个英语单词的小解,当学习之余的做零头吧。...Elixir / OTP和面向过程的编程 在Elixir / Erlang和OTP中,通信原语是执行语言的虚拟机的一部分。在进程之间和机器之间通信的能力建立在语言系统的中心。...Elixir或Erlang的任何培训课程必须(通常是)包括OTP,并且应该从一开始就有一个过程方向,而不是“现在你可以在Elixir中编写代码,所以让我们来做并发”类型的方式。...如果可以从数据库系统获得结果,我们可以选择不同的进程分配,其中总计通过临时进程更新。 最后,我们可以看到很多人会看到结果。这些进程可以以多种方式进行分区。...如果在投票集合和状态/省份和省份之间使用的协议是相同的,那么聚合逻辑可以被重用,但是需要不同的进程来保存结果,它们的通信路径是不同的,如图5所示。 ?

    1.4K10

    (译) Understanding Elixir Macros, Part 5 - Reshaping the AST

    生成的代码将包含: passed_args = [a, b] |> Enum.map(&inspect/1) |> Enum.join(",") 上面这段会按预期工作, 但如果一个参数是匿名变量(_),...那么我们将生成以下代码: passed_args = [_, 0] |> Enum.map(&inspect/1) |> Enum.join(",") 这显然是不正确的, 因此我们得到了未绑定变量错误...那么解决方案是什么呢? 我们不应该对输入参数做任何假设. 相反, 我们应该将每个参数放入宏生成的专用变量中....最后, 在推导式的末尾, 我们返回一个元组, 该元组由临时的名称和 quoted 的完整模式组成 - (例如 _ = arg1, 或 0 = arg2)....我们在这个 lambda 里做的实际上是一个模式匹配, 我们在寻找 {fun_name, context, args}.

    14330

    Elixir vs. Ruby和Phoenix vs. Rails:选择什么和为什么

    几年来,Web开发人员一直在积极讨论一种名为Elixir的新编程语言及其最受欢迎的Phoenix框架。 Elixir与Ruby和Phoenix vs....José一直在寻找有效的方法来解决Ruby on Rails开发中的并发问题,这些努力产生了一种新的编码语言。 Elixir是一种函数式语言,它使得它与面向对象的Web开发的大多数语言不同。...在以下文章中阅读更详细的Elixir语言评论: Elixir编程语言:为更好的应用程序开发而知道的事实 认识凤凰城 - Elixir的最佳编程框架 如果你读过Elixir,那就意味着你也遇到过凤凰这个词...Ruby on Rails的受欢迎程度背后的原因是什么? Rails框架由David Heinemeier Hansson在参与Basecamp项目时创建。...它最初发布到开源是在2004年.Ruby on Rails是用Ruby编写的,这个事实对于Ruby的流行至关重要。在那之前,Ruby编码语言并没有那么成功。

    2.5K00

    Elixir, OTP, Ecto, 和 Phoenix 免费教程!

    我们制作了25个短片(每个约5分钟),这将使你从“Elixir是什么东西”到“酷,我知道如何建立基本的Phoenix WebApp”迅速。...从那里开始,我们正在建立一个具有生产力的应用程序,用于持续优质内容。 如果您只想看内容,您可以跳过,否则坚持下去,我们将看看为什么我们投入大量的时间在Elixir生态系统中。 ?...我们正在以实践的方式学习使用持续集成,持续部署和坚实的测试套件等最佳实践来构建生产应用程序。 我们已经建立了一个Alpha版本的Firestorm,同时在社区内进行dogfooding。...如果没有为我们的Kickstarter做出贡献的每个人的支持,我们在项目中花费的免费内容和时间是不可能的。我们非常感激,并希望这个项目可以证明可以为世界建立高质量的开源软件,同时也生产高品质的教材。...如果您对Firestorm论坛的成功感兴趣,或者发现免费的内容很有价值,并希望在世界上看到更多这样的事情,那么如果您注册个人或团队帐户,我们将很荣幸DailyDrip。 初创企业很难!

    1.8K60

    当我做 hackathon 时我在做什么 (1)

    我们知道,一个 dataframe 往往都很大,如果封装起来在 elixir 和 rust 间来回拷贝着传,那效率低到马里亚纳海沟里去了。所以为了效率,两边要传引用。...而 dataframe 是可以修改的数据结构(如果调用时传入 inplace=True),这就意味着 Elixir 到 Rust 侧的传递需要 RwLock + Arc,而为了在 Elixir 侧能够很好地...最简单的方法是 groupby_apply 完全在 elixir 侧实现,lambda function 在 Elixir 上下文执行: list_series = Enum.map(df.column_names...这样理论上可行,算是上述方案的一个更加通用的版本。 ? 为了这么一个并不那么重要的函数做这么多工作,太耗时间,所以我放了一个含情脉脉的 TODO (tchen),待有空回来再做。...#[rustler::nif] 写得不够好,导致 1 如果说我的 rust 有初三的水平,那么我对 procedure macro 的应用和理解还在学前班。

    1.1K20

    (译) Understanding Elixir Macros, Part 6 - In-place Code Generation

    end end 这就是我们的问题. 如果我们在原地生成代码的同时动态地调用 deftraceable, 那么这样的假设就不再成立....如果我们想支持对宏的模块级动态调用, 就不应该在宏上下文中做任何假定. 相反, 我们应该将代码生成推迟到调用方的上下文中....end ... end 在实现解决方案之前, 必须注意到这不是一个通用的模式, 你应该考虑是否真的需要这个方法. 如果你的宏不打算用于模块级别, 那么你可能应该避免使用这种技术....如果传输的数据是一个 AST 且可能包含 unquote 片段, 那么您可能需要以 unquote: true 的方式使用 Macro.escape ....一定要记住 — 在展开阶段, 宏相当于 AST 片段的普通组合. 如果你理解调用者的上下文和宏输入, 那么直接执行转换或在必要时通过延迟执行转换并不算难. 本系列绝不可能涵盖方方面面和所有的细节.

    18240

    教程 | 如何使用Elixir语言实现深度学习?剖析多层神经网络的构建和训练

    然而,如果机器通过数字和浮点整数表示实际的数据和问题,那么奇迹般地,它们可以开始解决问题并理解人类!...加入新增的训练集数据,我们的图表变成下图: ? 设计 在计算机中表示神经网络的最佳方式是通过矩阵。矩阵是线性代数的有用工具,它允许我们对数字向量进行操作。 从图表中可以看出,有 3 列和 3 行。...我们已经在初始化权重时计入了偏差,所以我们的函数不需要有那个部分。那么我们所有要做的事是阶段 1 和 2。 ? 这里我们取输入和权重并做并行映射。...如果发现其错误率高于 0.02,那么它必须继续训练。这就是学习过程。神经网络必须经历重复循环,直到学习的任务几乎没有错误。我们可以通过模式匹配(pattern matching)实现: ?...在本文中,我们没有介绍所有的算法和这些网络架构不同的方式。未来的自动化目标是继续为 Elixir 社区提供如何使用神经网络解决各种各样的问题的精彩例子。

    1.1K130

    Ruby vs Elixir | 2022 该选哪个?

    Contents Ruby 和 Elixir(以及 Phoenix) 的起源 搞清楚 Ruby 和 Elixir 的优劣势 Elixir 和 Ruby 的最佳实践 最后,到底是选择 Elixir 还是...因此 Elixir 非常适合高并发、高容错性的应用。 可伸缩性 如果系统或者应用在未来的流量会大增,Elixir 的一大优势就是可以最大程度的利用一台机器。...函数式编程 Elixir 是函数式编程语言,而 Ruby 是面向对象编程语言(也支持函数式编程)。以这种方式理解这两种编程范式的差异可能会有些困难。...Elixir 和 Ruby 的最佳实践 在了解了这两种语言之间的差异之后,我们来看看 Elixir 和 Ruby 的最适合的使用场景。...但是,对于不需要 Elixir 独特功能的项目来说,这可能是一种过火的做法,所以仅仅因为这项技术越来越受到关注,并不意味着你应该不惜一切代价追随它 如果的应用是最佳实践中列出来的那些应用,请直接选择 Elixir

    1.6K10

    《批判性思维(原书第10版)》读书笔记

    最佳解释推理是一种非演绎推理,其目的在于在相互竞争的各种解释中找到对现象的最佳解释,最佳的标准是:解释力、预测力、一致性和简单性。...解释用于说明已知的现象,论证用于支持或证明某个主张。用于解释的语句也可以作为推理的前提或结论。 解释中往往会出现一个错误,不区分做某事的理由和特定的人做某事的理由。...例如,有理由帮助无家可归的人,但这些理由可能不是特定的人帮助他们的理由。当我们寻求或给出做某事的理由时,是在为之论证。当我们列举特定个体做某事的理由时,是在解释他或她为何这么做。...在功利主义看来,如果一个行为将比其他行为带来更多快乐,那么该行为就是正确的;如果采取某行为将带来较少的快乐,而其他可选行为将带来较多快乐,那么,采取该行为而不是其他可替代行为就是错误的。...法律家长主义认为,如果法律阻止某人做有害自己的事,那么相关的法律就可以得到证成;也就是说,法律为了某人自己的利益禁止或者限制X行为。 最后一种理由往往是为刑法辩护的依据,某些行为被认为是冒犯性的。

    1.8K20

    Elixir和ScyllaDB教你创建CRUD CLI,惊人的效率提升!

    好吧,让我们media_player使用以下命令创建密钥空间,在本例中是用于 a 的:cqlsh> CREATE KEYSPACE media_player WITH replication =...(查询的完整地图);如果返回是:error则说明执行查询时出现错误,那么我们检查具体的错误;{:ok, result}一个重要的细节是关于使用and进行的赋值{:error, error},因为在 Elixir...(查询的完整地图);如果返回是:error则说明执行查询时出现错误,那么我们检查具体的错误;如果您想了解有关该Xandra.Cluster.execute功能如何工作的更多信息,请单击此处。...如果您想了解更多信息,请单击此处以更好地了解 Elixir 如何与模式匹配配合使用。命令好吧,现在是期待已久的时刻:在我们的应用程序中添加负责执行命令的函数!...在同一个存储库中,您也可以使用 Elixir 访问该项目,因此如果您想查看完整的源代码,请知道它位于上面提到的同一链接!

    48630

    是不是直接写“发红包”而不是“请求微信发红包”

    以下是本问题的展开: 问题中有疑惑,分析序列图是否有什么区别?...上面讲了,“A请求B做某事”这个道理是一样的,但这个“做某事”之所以是“请求****”,确实和分析序列图有关,因为我们把系统分解了,其中有一个边界类,专门负责封装“请求微信发红包”的责任。...下面这个可以: 如果我们不分解目标系统,就变成: 可能有的同学会下意识反应,咦?“请求A系统做某事”哪里去了,是不是跑前面去了,像这样: 如果有这样的反应,那就要警惕了。...目标系统里面怎么分解的,是不是分了几个类,到底有没有一个类专门负责“请求A系统做某事”,这就不知道了。...当然,如果目标系统的价值确实就是给A系统当一层外皮,那么指向它的消息写“请求A系统做某事”就是合适的。

    41210

    上帝说:要有一门面向未来的语言,于是有了 erlang

    process 就像原子一样,组成分子,细胞,组织,器官,最终构成一副机体(见我的文章:谈谈边界(Boundary))。那么,process 究竟是什么?...elixir 又提供类似 lisp 的 macro 能力,因而可以轻易衍生出更多的 elixir 代码 —— 所有这些,当编译成 erlang 代码后,可能就是一个较大的函数,不那么利于 soft realtime...对此,stackoverflow 上有人的解答是:在 erlang 下,PCRE 代码的 regular expression 实现,因为顾及到 reduction,在处理过程中有可能让出 CPU,待下次被调度时再继续...如果把 erlang VM 看做是 OS 的 kernel,那么 OTP 就是这个 kernel 的其他组成部分:stdlib,initd,syslog,OAM,etc....然而,这些工具只关心你的服务如何在前台(foreground)运行,却并不关心诸如: 如何以 daemon 方式运行(启动,停止,重启); 如果以 daemon 方式运行,如何attach 进去,以便于调试

    1.4K110

    为什么我们要阅读源码?

    如果每篇文章平均一千字,那么我们读了数十万文字。这些文字,我们是精读过的(有些甚至要求全文背诵)。...在这个过程中,我们学会了赋、比、兴,我们掌握了三段论,我们知道了如何用更优雅地方式表达自己的思想。更重要的是,这些阅读训练让我们在我们在脱离学校的基础教育后,可以自己独立完成一本书的阅读。...于是我转而读了部分 iex 的代码,了解了 elixir 代码编译的方式,最终完成了一个 auto compiler 的 app —— 它能接受一些 API 请求,对预先配置的属于其他 app 下的源码可以在...如果没有之前各种源码阅读的累积,我很难做出这样的设计。...我们使用了 code as cache 的方法,把数据库里的内容的不必在运行时做的 transformation 都在 compile time 完成,然后在 run time 结合记叙文三要素,得到最终的结果

    78780

    有趣的Code Poster

    Pete Corey的博客《Build your own code poster with Elixir》展示了如何通过Elixir实现一个类似Commits.io一样的功能,即可以将自己的代码融合到一张...左侧是原图,右侧则将代码重叠到图中有颜色的部分,形成一种颇有极客范儿的图片。这很有趣。 实现代码并不复杂,不到200行代码。虽然简单,代码却很好地体现了Elixir编程的风格。...在Unix中,这种统一接口可以被隐喻为文件(file),上图中的stdin、stdout与stderr都属于file descriptor,可以像操作文件那样读或写字节流(stream of bytes...那么,在Code Poster场景下,这个统一接口是什么呢?或者说我们需要抽象的数据究竟是什么呢?分析前面的执行流程,读取一个code文件与读取一个image文件,返回的结果其实完全不同。...那么,如这般不同的数据结构如何才能够像Stream一样通过管道连接起来呢? 在Elixir中,我们通常通过定义一个struct来完成对数据的抽象。

    1.1K40

    最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?

    导读:如果你还在纠结选哪门编程语言来开启你的码农生涯,这将是你的最佳指南。...在考虑最佳职业发展方向时,工程师们在选择编程语言上通常会考虑四点: 高薪,钱途第一啊毕竟 大量、多样的职位需求 越来越受欢迎的趋势 容易上手,工作友好 我们这次的名单也会考虑以上几个点,部分抓取了世界上最大的求职网站...年,StackOverflow 评选出的四种最受欢迎的框架中有三种都是基于 JavaScript。...正是由于这个原因,你可以很轻松的在各个地方找到合适的 Java 职位,这是其他相对不那么流行的编程语言难以达到的。所以如果 Java 是你的菜,那你找到合适的工作机会只是时间问题。 ?...Elixir主要应用于网站开发,虽然工作机会有限但薪资可观,并且在近几年越来越受欢迎。如果你所在的城市有众多IT企业,Elixir开发人员将会是追捧对象。

    1.3K20
    领券