我现在需要一个家庭项目,我正在开发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/
答案 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商店中使用。
我可能只是给你这个答案,因为这是我打算学习的下两种语言,我自己。
你可能也应该花一点时间玩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。
也许会查看Oz,Io或Erlang/OTP等语言,这些语言是分布式的,而不是像您提到的那样主要是单片式的。
答案 6 :(得分:0)
Java Spring框架怎么样?
或者也许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#。