什么是学习了解不同方法和概念的重要语言? [英] What are important languages to learn to understand different approaches and concepts?

查看:56
本文介绍了什么是学习了解不同方法和概念的重要语言?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当您只有一对断线钳和一瓶伏特加酒时,一切看起来都像沃尔夫·勃利泽(Wolf Blitzer)船屋门上的锁一样. (如果您不阅读xkcd,请用锤子和钉子将其替换)

When all you have is a pair of bolt cutters and a bottle of vodka, everything looks like the lock on the door of Wolf Blitzer's boathouse. (Replace that with a hammer and a nail if you don't read xkcd)

我目前正在编写Clojure,Python,Java和PHP,因此我对C和LISP语法以及空白内容很熟悉.我知道命令式,功能式,不变式,OOP和几个类型的系统以及其他东西.现在我想要更多!

I currently program Clojure, Python, Java and PHP, so I am familiar with the C and LISP syntax as well as the whitespace thing. I know imperative, functional, immutable, OOP and a couple type systems and other things. Now I want more!

哪些语言采用不同的方法,并且对选择实用工具或理论理解很有用?

What are languages that take a different approach and would be useful for either practical tool choosing or theoretical understanding?

我不想学习另一种功能语言(Haskell)或另一种命令式OOP语言(Ruby),也不想练习像Brainfuck这样不切实际的有趣语言.

I don't feel like learning another functional language(Haskell) or another imperative OOP language(Ruby), nor do I want to practice impractical fun languages like Brainfuck.

我发现自己很有趣的一件事是像Factor这样的基于单音符号堆栈的语言.

One very interesting thing I found myself are monoiconic stack based languages like Factor.

只有当我感觉自己能理解大多数概念并回答所有问题时,我才想开始考虑自己的玩具语言以包含我的所有个人喜好.

Only when I feel I understand most concepts and have answers to all my questions, I want to start thinking about my own toy language to contain all my personal preferences.

推荐答案

实用性是很主观的,所以我只想简单地说,学习不同的语言范例只会使您成为一个更好的程序员.还有什么比这更实际的?

Matters of practicality are highly subjective, so I will simply say that learning different language paradigms will only serve to make you a better programmer. What is more practical than that?

功能正常,Haskell -我知道您说过您不想这样做,但您应该真正考虑一下.您已经使用Clojure甚至Python获得了一些功能方面的知识,但是如果没有Haskell,就不会充分体验到它.如果您真的反对Haskell,则可以选择ML或OCaml.

Functional, Haskell - I know you said that you didn't want to, but you should really really reconsider. You've gotten some functional exposure with Clojure and even Python, but you've not experienced it to its fullest without Haskell. If you're really against Haskell then good compromises are either ML or OCaml.

声明式,数据日志-很多人会在此位置推荐Prolog,但我认为Datalog是声明式语言的更简洁示例.

Declarative, Datalog - Many people would recommend Prolog in this slot, but I think Datalog is a cleaner example of a declarative language.

数组,J -我只是发现了J,但我发现它是一种令人赞叹的语言.它将使您的大脑变成椒盐脆饼.您将为此感谢J.

Array, J - I've only just discovered J, but I find it to be a stunning language. It will twist your mind into a pretzel. You will thank J for that.

堆栈,Factor/Forth -Factor非常强大,我打算尽快对其进行深入研究. Forth是Stack语言的祖父,此外,它很容易实现.关于通过实施进行学习,有话要说.

Stack, Factor/Forth - Factor is very powerful and I plan to dig into it ASAP. Forth is the grand-daddy of the Stack languages, and as an added bonus it's simple to implement yourself. There is something to be said about learning through implementation.

Oz的数据流-我认为Oz的影响正在上升,并且将来只会继续增长.

Dataflow, Oz - I think the influence of Oz is on the upswing and will only continue to grow in the future.

基于原型的JavaScript/Io/Self -Self是祖父,并且在每种基于原型的语言中都具有很大的影响力.这与基于类的OOP不同,不应将其视为此类.许多人使用一种原型语言并创建了一个临时类系统,但是如果您的目标是扩大思维范围,那么我认为这是一个错误.充分利用语言.阅读组织无类的程序以获得想法.

Prototype-based, JavaScript / Io / Self - Self is the grand-daddy and highly influential on every prototype-based language. This is not the same as class-based OOP and shouldn't be treated as such. Many people come to a prototype language and create an ad-hoc class system, but if your goal is to expand your mind, then I think that is a mistake. Use the language to its full capacity. Read Organizing Programs without Classes for ideas.

专家系统,剪辑-我总是推荐这样做.如果您了解Prolog,那么您可能会在掌握速度方面占上风,但是这是一种非常不同的语言.

Expert System, CLIPS - I always recommend this. If you know Prolog then you will likely have the upper-hand in getting up to speed, but it's a very different language.

Frink -Frink是一种通用语言,但以单位转换系统而闻名.我发现这种语言在不懈地追求最佳性能方面非常鼓舞人心.另外...真的很有趣!

Frink - Frink is a general purpose language, but it's famous for its system of unit conversions. I find this language to be very inspiring in its unrelenting drive to be the best at what it does. Plus... it's really fun!

功能+可选类型,Qi -您说您曾经使用过某些类型系统,但是您是否拥有过可滑动*"类型系统的经验? Qi在许多方面都类似于Lisp,但其类型系统会让您大吃一惊.

Functional+Optional Types, Qi - You say you've experience with some type systems, but do you have experience with "skinnable* type systems? No one has... but they should. Qi is like Lisp in many ways, but its type system will blow your mind.

Actor + Fault-tolerance,Erlang -Erlang的过程模型引起了广泛关注,但其容错和热代码交换机制正在改变游戏规则.您不会对Clojure所学的FP知识了解不多,但是它的FT功能会让您想知道为什么更多的语言似乎无法正确解决这一问题.

Actors+Fault-tolerance, Erlang - Erlang's process model gets a lot of the buzz, but its fault-tolerance and hot-code-swapping mechanisms are game-changing. You will not learn much about FP that you wouldn't learn with Clojure, but its FT features will make you wonder why more languages can't seem to get this right.

享受!

这篇关于什么是学习了解不同方法和概念的重要语言?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆