asm / C / Python / Perl / Lisp / Scheme程序员正在寻找新的东西来学习

时间:2009-10-18 00:29:49

标签: java python haskell lisp smalltalk

我现在需要一个家庭项目,我正在开发Python / Django。我想学习一些新东西,所以我想考察一下Java。

用于部署Java Web应用程序的最受尊敬的Web框架是什么? 我没有在轨道上检查ruby的唯一原因是因为ORM和其他部分与Django的相似程度。

或者,是否有人认为我应该看看海边/ smalltalk?任何人都可以解释我为什么要这样做吗?

如果有人可以为它做出好的论证,我会考虑Haskell。我需要一个Web框架和数据库访问库来配合它。

如果我不习惯通过x86 / asm的堆栈范例,我会考虑因素/。我也愿意听到任何反驳意见。

另请参阅:http://www.reddit.com/r/programming/comments/9v3uf/asm_c_python_perl_lisp_scheme_programmer_looking/

12 个答案:

答案 0 :(得分:14)

凭借这些技能,你为什么不学习更多在你的舒适区之外的东西,比如木工或绘画,或者与你的领域没什么关系的数百种其他技能。

在某些时候,所有语言都是相同的,你将从学习另一种语言中获益匪浅。

然而,在完全不同的情况下,你将成为一个更加全面的个体。我,其中一个,就像绘画和高尔夫,尽管我对他们中的任何一个都不擅长 - 当我问我的高尔夫教练我的差点是什么时,他说这是无法直接击球: - )

我发现我喜欢做我不习惯的事情,因为这是一种真正的新体验。在一段时间之后学习另一种计算机技能是一件容易的事情,因此减少了这种技能的乐趣。

不要误会我的意思,我喜欢跟上这个领域的发展,但是,在大多数情况下,全新的技术对我的职业生涯没有任何帮助,因为我所做的大部分工作都是稳定的技术。你可能处于不同的境地。

答案 1 :(得分:6)

Haskell这些日子非常受欢迎,但如果你已经知道Lisp和Scheme,它对你来说可能不会受到太大影响。它纯粹是功能性的,所以对任何东西都没有副作用。您必须使用monad来打印文本并执行需要特定订单的其他操作。它也是完全懒惰的评估,所以你可以在Haskell中创建无限列表,而不必担心内存消耗。

Haskell Platform可能不完全完整,但是它是Haskell的一组可移植库。它的list of packages包括一些用于CGI处理和(X)HTML生成。

答案 2 :(得分:4)

听起来你喜欢网络编程,所以smalltalk / seaside非常棒。 IMO每个人都应该学习smalltalk,即使他们从不使用它,而且海边是一个与你习惯的完全不同的Web框架。 Django,fer实例,都是关于REST的,而海边哲学基本上是“用REST来治愈”。

如果你从来没有在基于图像的环境中进行编码,那么它的某些东西似乎......自然,神奇甚至。源自smalltalk的许多IDE功能已经在基于文件的语言IDE中实现,但它总是感觉像一个不自然的嫁接,其中那些相同的功能感觉好像它们只是属于smalltalk。

查看Pharo。给它足够的时间来适应这样一个事实:没有菜单栏,看看它是否没有抓住你。

答案 3 :(得分:3)

我确实建议使用Java。当我找工作的时候,我注意到Java开发人员有很多空缺,因此有很多空缺,你可能有一天有机会使用你的Java技能。

然后你应该尝试Scala。 Scala是一种Python-ish语言,它使用函数式编程来制作非常可伸缩的程序。与Python不同,在Scala中,您需要声明类型的东西。 Scala在Java虚拟机上运行,​​因此可以在Java商店中使用。

http://www.scala-lang.org/

我可能只是给你这个答案,因为这是我打算学习的下两种语言,我自己。

你可能也应该花一点时间玩Javascript。 Javascript有点像是一个“隐形Lisp”,我想你会选择它。

http://www.crockford.com/javascript/javascript.html

http://bc.tech.coop/blog/030920.html

哎呀,玩得开心吧。写游戏什么的!

答案 4 :(得分:2)

从你的列表中我会说你应该使用完全面向对象的语言。

你可以查看Ruby,但我推荐JavaScript,因为它提供了许多你可能不会想到的有趣的东西,比如支持闭包,高阶函数和原型继承 - 再加上它有点乐趣而且变得非常有用受欢迎。

答案 5 :(得分:2)

  

我需要一个Web框架和数据库访问库来配合它。

如果您的所有编程都基于Web框架和SQL数据库,那么只有在切换语言时,您才能使用不同的语法解决相同的问题。

使用不同的数据模型构建内容 - Prolog,Conceptual Graphs,RDF,Linda / JavaSpaces,XQuery,HDF5,ASN.1或其他网络模型 - XMPP pub-sub,SNMP,零配置网格或一群ZigBee启用了Arduinos。

也许会查看OzIoErlang/OTP等语言,这些语言是分布式的,而不是像您提到的那样主要是单片式的。

答案 6 :(得分:0)

Java Spring框架怎么样?

http://www.springsource.org/

或者也许NHibernate?

http://en.wikipedia.org/wiki/NHibernate

在一天结束时,由你决定。因为我只列出了两个中的两个。当我在专业上编写静态语言时......我尝试学习动态或脚本语言。反之亦然。

此外,我尝试学习完全不同的东西或在我的领域之外...甚至可能是Powershell或Korn shell或ActionScript。

答案 7 :(得分:0)

  

用于部署Java Web应用程序的最受尊敬的Web框架是什么?

没有比其他人更受尊重的单一Web框架。 Struts2,Spring MVC,Stripes或Wicket(基于事件)都是很好的候选者(我个人喜欢Stripes)。但是你需要更多的持久性(Hibernate或JPA)和胶水(Spring)。

Grails(Groovy on Rails)是另一个不错的选择。

  

或者,是否有人认为我应该看看海边/ smalltalk?任何人都可以解释我为什么要这样做吗?

好吧,我想学习Smalltalk不会受到伤害,但我认为没有理由选择Smalltalk而不是像Java这样的现代语言。关于工具,除了VisualAge for Smalltalk之外我对这个领域什么都不知道,但就个人而言,我真的远离它。

  如果有人可以为它做出好的论证,我会考虑Haskell。 [...]

看起来我不适合那个人。

  

如果我不习惯通过x86 / asm的堆栈范例,我会考虑因素/。我也愿意听到任何反驳意见。

与上述相同。

答案 8 :(得分:0)

我建议掌握Lisp(用一些相关的方言),所以即使你的简历中有Lisp和Scheme,也可能值得深入学习。有关原因,请参阅http://www.paulgraham.com/avg.html

否则Prolog可能会对您感兴趣。它与SQL有关,但与编程有关,而不是与一组有组织的数据表进行通信。

如果您想要定位Web技术,我只有Java经验。这里最新的Java Server Faces(JSF)允许使用Ajax更新页面,而Google Web Toolkit允许使用非常丰富的基于组件的Web页面。这些可能足够多,足以引起你的兴趣,足以学习足够的Java来发现它们很有趣:)

答案 9 :(得分:0)

我没有在列表中看到C#和.NET平台。我很惊讶没有人提到它。

我在C#工作了5年。我查看了一些Java代码,但我从未编写过代码。我相信Java有点类似于C#,所以如果你精通一个我认为你可以拿起另一个就是几天。

一个想法可能是创建自己的语言/编译器。我想创建(或看到创建)的那个将是一个汇编语言级别的编译器,其面向对象的语法非常类似于Python ...但是使其成为类型语言。您可以从基本的原始二进制类型db,dw,dd开始,然后添加到这些...函数和方法可以在高级代码中自由混合汇编语言。现在,我认为这将是一个有趣的项目?

答案 10 :(得分:0)

绝对尝试Haskell或Smalltalk或Forth。

我会说Smalltalk最有用,而Forth会让你远离x86 asm和C废话。编写接近硬件的东西的方法不止一种。

答案 11 :(得分:0)

你为什么不试试OCaml?如果你曾经(遗憾地)回到.NET世界 - 你将在行李中了解F#。