众所周知,不同的人对各种编程范式有不同的能力(例如,有些人在学习非程序性语言,尤其是函数式语言时遇到困难.有些人在理解指针时遇到困难 - 请参阅Joel Spolsky的博客,了解其中的一些问题.有些人难以掌握递归).
我最近在阅读一篇关于某人的母语语法如何影响他们学习数学的速度的研究.现在找不到那篇文章但是快速的谷歌搜索发现了这个参考.
这让我想知道某人的本土文化或第一语言是否会影响他们对各种编程范式的能力.我对正面影响更加好奇 - 例如某些特性使某人更容易/更快地学习特定范例,例如母语语法非常以递归为导向.
需要明确的是,我正在寻找文化/语言语法如何影响同一个人对各种范式的能力之间的差异,而不是它如何影响不同人之间编程的总体能力.
重要提示:我感兴趣的唯一答案要么是参考科学研究,要么是熟悉特定文化/语言的人的个人观察,包括他们自己的经验.
例如,除非你说中文或者与大量中国本土程序员一起工作,否则我对你的第一语言中文如何影响你的看法并不感兴趣.
我猜你的猜测不是基于科学研究,但请务必提供你的观察可能原因的推理.
我对文化抨击不感兴趣(任何此类表彰都将被删除或标记为删除).
我对文化建设也不是特别感兴趣 - 我们都知道Linus来自芬兰,俄罗斯方块是在俄罗斯写的,而Larry Wall是美国人.任何文化/国家都可以在任何学科中产生出色的头脑.我对平均水平感兴趣.
不同语言最常使用哪些文件扩展名?请不要放置源文件名(如.java),而是放置在呈现页面的URL中的扩展名.
到目前为止,这是我的(按字母顺序排列)列表
还有吗?我会根据评论不断更新.最大的正确添加(或删除)是可接受的答案.
旁白:这是用于比较在线语言使用:http://blog.paulisageek.com/2009/10/file-extensions-on-internet.html
随着时间的推移,似乎越来越像函数式编程对其他编程语言产生更多影响.我们在我的AI课程中开始使用Prolog,似乎有一些东西可以使非AI领域的编程变得更容易.我的问题是:为什么逻辑编程没有以同样的方式被捕获?
在本主题中,似乎达成了一个普遍的共识,即逻辑编程很有用,但必须这样证明.它有没有被认为有用的原因?
更新:也许我应该更清楚一点.我不是在问Prolog.我可以理解为什么在大多数真实世界的应用程序中选择Prolog不是一个好主意.
为了举一个我正在讨论的内容的例子,请考虑Python中的列表推导/ map/filter.这些明显受功能语言的影响.为什么像Python这样的语言还没有从逻辑编程语言中学到这些东西,比如它们有函数式语言?
在您看来,程序员最重要的语言是什么?我说的是概念,而不是语言的实用程度.
列出语言和原因.例如,用于函数编程的Lisp,用于基于原型的OOP的JavaScript等.
C#目前势头良好.为了切换(或返回)到Java ,您需要具备哪些功能?
如果人们为当前的Java版本发布了这些的变通方法,例如Nullables被自定义类包装,那么这将是非常有用的,以使这个更有趣的wiki.
如何为要从头设计的新编程语言(命令式编程语言)定义语法(无上下文).
换句话说:当您想从头开始创建新的编程语言时,如何继续.
compiler-construction grammar programming-languages context-free-grammar
有谁知道在Javascript中更改文件扩展名的简单方法?
例如,我有一个带有"first.docx"的变量,但我需要将其更改为"first.html".
我在书中读到:"编程的主人",与Guido Van Rossum的访谈说:
Python与Lisp共享的基本属性(也不是函数式语言!)是函数是一流的对象 ......
那么,Lisp 不是一种函数式编程语言?
圭多错了吗?之后怎么样了?
如果有的话,OOP子类型优于类型组有什么优势?换句话说,现在我们有类型类,有没有理由继续使用OOP子类型?
PS:我是Scala程序员.
oop haskell programming-languages functional-programming scala
是否有网上的正则表达式实施列表,显示它们的差异/相似之处?
对于exaple,Emacs elisp Regex与JavaScript或Perl正则表达式不同,更不用说不同编辑器软件使用的所有不同实现,
例如,VS2010使用{}而不是()为反向引用分组表达式.
曾几何时,我可以依赖O'Reilly的Regex Pocket快速参考中的正则表达式转换列表,但在线的内容会更容易,更完整.
顺便说一句,我知道(当然)http://www.regular-expressions.info/这是好的,但没有接近完成.
我将根据此处发布的答案以及我能找到的任何其他内容编制列表.
实现的差异通常{}()[]^$是处理特殊字符的方式(转义规则等),偶尔也会替换; POSIX字符类的处理/可用性,例如[:digit:],选项的使用,例如g i等.
(正在进行的工作,如果你知道任何警告,这些实现的差异请添加它们作为答案)
\\在elisp中使用,以及\在regexp-replace.(){}[]使用正则表达式时,特殊字符会被转义,就像使用它们一样sed.