标签: programming-languages

最有趣的非主流语言?

我对编译器,口译员和语言感兴趣.

你知道的最有趣但却被遗忘或未知的语言是什么?更重要的是,为什么?

我对编译,解释和VM语言感兴趣,但不是像Whitespace或BF这样的深奥语言.
当然,开源是一个优势,因为我打算学习并希望从中学习.

programming-languages language-design

43
推荐指数
13
解决办法
6706
查看次数

为什么Objective-C在Apple社区之外不受欢迎?

我知道Apple社区 - 包括Mac和iPhone开发人员 - 主要使用Objective-C作为他们的开发语言.但似乎没有多少人在Apple社区之外使用Objective-C,例如在Windows或Linux世界中.

Objective-C在Apple社区之外不是特别受欢迎的可能原因是什么?

programming-languages objective-c

43
推荐指数
5
解决办法
3万
查看次数

Java - 为什么没有基于返回类型的方法重载?

我知道这是不可能的,但任何人都可以提供一个理论,为什么Java选择不支持这个?我问,因为我遇到了一个我觉得很高兴的情况.

java programming-languages overloading return

43
推荐指数
3
解决办法
2万
查看次数

为什么堆栈溢出仍然存在问题?

多年来这个问题让我很困惑,考虑到这个网站的名字,这是值得一提的地方.

为什么我们程序员仍然有这个StackOverflow问题?

为什么在每个主要语言中线程堆栈内存都必须在创建线程时静态分配?

我将在C#/ Java的上下文中发言,因为我最常使用它们,但这可能是一个更广泛的问题.

固定堆栈大小会导致巨大的问题:

  • 除非你绝对确定递归的深度很小,否则无法编写递归算法.递归算法的线性存储器复杂性通常是不可接受的.
  • 没有廉价的方法来启动新线程.您必须为堆栈分配大量内存来考虑线程的所有可能用途.
  • 即使您不使用非常深的递归,由于堆栈大小是任意固定数,您总是有可能耗尽堆栈空间.考虑到StackOverflow通常是不可恢复的,这是我眼中的一个大问题.

现在,如果堆栈动态调整大小,上面的所有问题都会大大减轻,因为堆栈溢出只有在存在内存溢出时才有可能.

但事实并非如此.为什么?现代CPU有一些基本限制会使其变得不可能/效率低下吗?如果你考虑重新分配所带来的性能ArrayList损失,它应该是可以接受的,因为人们一直使用结构而不会遭受太多痛苦.

所以,问题是,我错过了什么,StackOverflow不是问题,或者我错过了什么,有很多语言有动态堆栈,还是有一些很大的原因让这个不可能/难以实现?

编辑: 有人说性能会是个大问题,但请考虑一下:

  • 我们保持编译后的代码不变.堆栈访问保持不变,因此"通常情况"性能保持不变.
  • 我们处理CPU异常,当代码试图访问未分配的内存并启动我们的"重新分配"例程时会发生这种异常.重新分配不会频繁,因为<将您通常的ArrayList参数放在此处>.应该在大多数保护模式CPU上工作而不会降低性能.没有?

stack programming-languages memory-management

43
推荐指数
5
解决办法
1719
查看次数

什么是Python名称空间

我刚刚开始学习Python并且在Python中遇到了"命名空间"概念.虽然我得到了它的概念,但我无法理解这个概念的严重性.

网上的一些浏览显示,针对PHP的一个原因是它没有对命名空间的本机支持.

有人可以解释如何使用命名空间以及此功能如何使编程更好(不仅仅是在Python中,因为我假设命名空间不是限于特定语言的概念).

我主要来自Java和C编程背景.

python programming-languages namespaces

43
推荐指数
2
解决办法
3万
查看次数

有用的替代控制结构?

有时当我编程时,我发现某些特定的控制结构对我来说非常有用,但在我的编程语言中却无法直接使用.我认为我最常见的愿望是"分裂时"(我不知道该怎么称呼它):

{
    foo();
} split_while( condition ) {
    bar();
}
Run Code Online (Sandbox Code Playgroud)

此代码的语义将foo()始终运行,然后检查条件.如果为true,则bar()运行,然后返回第一个块(因此foo()再次运行等).感谢reddit用户zxqdms的评论,我了解到Donald E. Knuth在他的论文"使用go to语句进行结构化编程"(参见第279页)中写到了这种结构.

您认为哪些替代控制结构是组织计算的有用方法?

我的目标是为自己和他人提供构建代码的新方法,以改进分块和推理.

注意:我不是在询问如何概括所有可能的控制结构,无论是使用jne,if/ goto,Lisp宏,continuation,monads,组合器,夸克还是其他任何东西.我问的是什么专业在描述代码时很有用.

loops programming-languages control-structure

43
推荐指数
15
解决办法
7685
查看次数

基于原型的OO有哪些优于OO的优势?

为什么基于类的OO如此受欢迎而不是基于原型的OO?他们是否在学校教授后者?虽然Javascript是基于原型的,但大多数人主要使用它,或者通过试图模拟基于类的系统的框架.

我知道Sun已经对Self进行了一些研究- 是否有关于原型oo的其他任何知识来源?最好是可以自学的东西.

我找到了一本包含已发表论文的书:基于原型的编程:概念,语言和应用

有人读过吗?

-

所以我给了我最大的回答.不过,我真的不太满意.我本来希望听到更多技术性的答案.也许我没有很好地解释自己.

javascript oop programming-languages class selflanguage

42
推荐指数
6
解决办法
6485
查看次数

功能编程范例是否有可视化建模语言或风格?

UML是一个旨在用软件建模的标准,它将用OO语言编写,并与Java携手并进.它是否可能用于模拟软件的功能编程范式?鉴于嵌入的视觉元素,哪些图表将变得有用?

是否有针对函数式编程的建模语言,更具体地说是Haskell?你会推荐哪些工具来组合图表?

由OP于2009年9月2日编辑:

我正在寻找的是代码中发生的最直观,最轻的代表.易于遵循的图表,视觉模型不一定针对其他程序员.我很快就会在Haskell开发一款游戏,但由于这个项目是我的毕业结论工作,我需要介绍一下拟议解决方案的某种形式化.我想知道是否有相当于UML + Java标准,但对于Haskell.我应该坚持使用故事板,书面描述,非正式化的图表(一些浅的流程图图像),非正式的用例描述吗?

由jcolebrand编辑2012年6月21日:

请注意,提问者最初想要一个视觉元素,现在我们已经有三年了,我们正在寻找更多/更好的工具.原始答案都没有真正解决"视觉隐喻设计工具"的概念,所以......这就是新的赏金所要提供的.

modeling haskell programming-languages functional-programming

42
推荐指数
7
解决办法
6915
查看次数

为什么我不会在大多数高级语言中看到管道运营商?

在Unix shell编程中,管道操作符是一个非常强大的工具.使用一小组核心实用程序,系统语言(如C)和脚本语言(如Python),您可以构建极其紧凑且功能强大的shell脚本,这些脚本由操作系统自动并行化.

显然这是一个非常强大的编程范例,但我没有看到管道作为除shell脚本之外的任何语言的一流抽象.使用管道复制脚本功能所需的代码似乎总是非常复杂.

所以我的问题是为什么我在C#,Java等现代高级语言中看不到类似于Unix管道的东西?是否有支持一流管道的语言(除了shell脚本)?表达并发算法不是一种方便安全的方法吗?

为了防止有人提起它,我查看了F#管道转发操作符(前向管道操作符),它看起来更像是一个函数应用程序操作符.它将函数应用于数据,而不是将两个流连接在一起,据我所知,但我愿意进行更正.

后记:在做一些关于实现协同程序的研究时,我意识到有一些相似之处.在一篇博客文章中,马丁·沃尔夫描述了一个类似于我的问题,但在协程而不是管道方面.

language-agnostic shell concurrency programming-languages pipe

42
推荐指数
5
解决办法
5228
查看次数

Code-Golf:编译和崩溃的最短程序是什么?

这有点儿有趣.你可以设计一个最短的程序,它可以编译但什么都不做,但在执行时会立即崩溃?因此,"崩溃"意味着程序因错误条件(例如核心转储)而停止.

是否有一种语言使用gcc编译器比C语言崩溃更快(7个字符)?[我留下这个答案供有人找.]

(应该允许使用编译器标志.否则7现在不能工作,编译器检查变得更好.)

[结果评估]我无法标记单个答案,因为多种语言有多个正确答案.将一个答案换成另一个答案是不公平的.请用投票选出最佳答案.

programming-languages code-golf

41
推荐指数
16
解决办法
1万
查看次数