我对这是什么有一个粗略的想法,但如果有人对"表达问题"的解释他们认为简洁直观我很乐意听到它.
computer-science programming-languages functional-programming
我发现很多人使用闭包和块互换的词.这些人中的大多数都无法解释他们在谈论什么.
一些Java程序员(甚至来自真正昂贵的咨询公司)将匿名内部类称为"块"和"闭包" - 但我知道这不是真的.(你不能从定义它们的方法范围中传递可变变量......)
我在找:
我真的很想看到关于这些的链接,文章或书籍参考.
theory computer-science programming-languages language-theory
我之前接触过命令式语言(C,一些Java),但我会说我没有编程经验.因此:将我视为非程序员,Haskell是否适合作为第一语言?
我对纯数学和CS的兴趣似乎与大多数Haskell教程的意图一致,尽管我可以从根本上认识到命令式编程的当前和未来行业价值,但我发现了函数式编程的潜力(尽管看起来像这样一个范式转变)令人着迷.
我想我的问题可以按如下方式提炼 - 非程序员是否必须理解命令式编程以欣赏和充分利用函数式编程?
一些参考:
有谁知道是否可以在.NET中定义"java自定义类加载器"的等价物?
给一点背景:
我正在开发一种针对CLR的新编程语言,称为"Liberty".该语言的一个特性是它能够定义"类型构造函数",它是编译器在编译时执行并生成类型作为输出的方法.它们是泛型的泛化(该语言确实具有普通泛型),并允许编写这样的代码(使用"Liberty"语法):
var t as tuple<i as int, j as int, k as int>;
t.i = 2;
t.j = 4;
t.k = 5;
Run Code Online (Sandbox Code Playgroud)
"tuple"的定义如下:
public type tuple(params variables as VariableDeclaration[]) as TypeDeclaration
{
//...
}
Run Code Online (Sandbox Code Playgroud)
在这个特定的例子中,类型构造函数tuple提供类似于VB和C#中的匿名类型.
但是,与匿名类型不同,"元组"具有名称,可以在公共方法签名中使用.
这意味着我需要一种方法,最终由编译器发出的类型可以跨多个程序集共享.例如,我想要
tuple<x as int>在程序集A中定义的最终类型与tuple<x as int>程序集B中定义的类型相同.
当然,问题是程序集A和程序集B将在不同的时间进行编译,这意味着它们最终都会发出自己不兼容的元组类型版本.
我考虑使用某种"类型擦除"来做这个,所以我会有一个像这样的一堆类型的共享库(这是"Liberty"语法):
class tuple<T>
{
public Field1 as T;
}
class tuple<T, R>
{
public Field2 as T;
public Field2 as R;
}
Run Code Online (Sandbox Code Playgroud)
然后只重定向来自第i,j和k元组字段来访问Field1,Field2和Field3.
然而,这不是一个真正可行的选择.这意味着,在编译时 …
.net compiler-construction clr language-features programming-languages
我只是不知道,有什么技术原因吗?为弱键入的语言实现编译器是否更难?它是什么?
compiler-construction programming-languages interpreted-language
几个月前我遇到了J/K/APL,同时解决了一些项目的问题,并且至少可以说是好奇.对于我制作的每一个看起来优雅的20行蟒蛇解决方案,都会有十分之一的gobsmacking 20 字符 J解决方案.我一直热衷于学习一些基本的J,并且已经做了一些尝试来学习词汇,但是发现学习曲线非常陡峭.
对于那些熟悉这些语言的人,你会建议花一些时间学习一门(我特别想到J)吗?为了满足我的好奇心而不是为了职业发展或某些这样的事情,我会这么做.
如果您愿意,可以考虑一些个人情况:
熟悉这些语言的人的任何建议都将非常感激.
如果你有一个有趣的故事要分享,请发一个答案,但不要滥用这个问题来抨击一种语言.
我们是程序员,我们的主要工具是我们使用的编程语言.
虽然有很多关于最佳编程的讨论,但我想听听你曾经使用过的最糟糕的编程语言的故事,我想知道你到底是什么烦恼.
我想收集这些故事,部分是为了避免在设计语言(特别是DSL)时遇到常见的陷阱,部分是为了避免未来的奇怪语言.
这个问题不是主观的.如果一种语言只支持单个字符标识符(请参阅我自己的答案),那么这是一个不容争议的方式.
编辑
有些人担心这个问题会吸引巨魔.趟过你所有的答案都有一点清楚.绝大多数答案都是恰当,有用且写得很好的.
更新2009-07-01 19:15 GMT
语言概述现已完成,涵盖102个答案中的103种不同语言.我决定对什么算作编程语言松懈,包括任何合理的东西.感谢大卫对此的评论.
以下是目前为止涵盖的所有编程语言(字母顺序,与答案相关联,新条目以粗体显示):
ABAP, 所有20世纪语言, 所有拖放语言, 所有专有语言, APF, APL (1), AS400, Authorware, Autohotkey, BancaStar, BASIC, Bourne Shell, Brainfuck, C++, Centura Team Developer, Cobol (1), Cold Fusion, Coldfusion, CRM114, Crystal语法, CSS, Dataflex 2.3, DB/c …
我开始学习方案乐趣,如果有人使用它为生活作为主要编程语言...甚至作为一个额外的工具,编程库不知道?如果是这样,你用它做什么?你通常用什么样的问题来解决它?
如果没有,是否有一个好的计数器示例显示迭代算法,其中不存在递归对应物?
如果所有迭代算法都可以递归表达,那么在哪些情况下更难以做到这一点?
此外,编程语言在这一切中扮演什么角色?我可以想象,Scheme程序员对Java迭代(=尾递归)和堆栈使用的看法与Java专用程序员不同.