Questions tagged «programming-languages»

用于指示计算机执行计算步骤以完成任务的人工语言。它们允许程序员与计算机进行通信。

5
一流的功能
我本周末开始认真看一下Lisp(这意味着我只是在学习Lisp,而不是回到C#中的项目),必须说我喜欢它。我曾涉猎其他功能语言(F#,Haskell,Erlang),但没有感受到Lisp给我的吸引力。 现在,当我继续学习Lisp时,我开始怀疑为什么非功能语言不支持一流的功能。我知道诸如C#之类的语言可以对委托执行类似的操作,并且在某种程度上您可以使用指向C / C ++中的函数的指针,但这是否有理由为什么它永远不会成为这些语言的功能?使函数成为一流有缺点吗?对我来说,它非常有用,所以我迷失了为什么更多的语言(功能范式之外)没有实现它。 [编辑]我很感谢到目前为止的回答。由于已经向我证明许多语言现在都支持一流的功能,因此我将问题重新表述为:为什么语言要花费这么长时间来实现它们?[/编辑]

4
如何发现未记录的功能?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我一直想知道您如何找到未公开/专用的 API? 例如Apple未公开的/私有的API,Play Station,Windows Phone 7,Win32内核,Windows API,隐藏的回调等... 黑客使用哪些工具来查找私有和未记录的功能? 在哪里可以读到人们深入研究私有API和反向工程技术的经验,这些经验揭示了API文档中通常解释的秘密? 谢谢, 阿

2
编译器应如何报告错误和警告?
我不打算在不久的将来编写编译器。仍然,我对编译器技术以及如何改进这些东西很感兴趣。 从编译语言开始,大多数编译器有两个错误级别:警告和错误,第一个是大多数情况下应修复的非致命性错误,以及表示大多数时间无法生成机器(或字节)的错误。输入的代码。 虽然,这是一个很弱的定义。在某些语言(例如Java)中,如果不使用该@SuppressWarning指令,就无法消除某些警告。而且,Java将某些非致命性问题视为错误(例如,由于我想知道的原因,Java中无法访问的代码会触发错误)。 C#没有相同的问题,但是确实有一些问题。似乎编译是在多个过程中进行的,并且过程失败会阻止进一步的过程继续执行。因此,通常会严重低估构建失败时获得的错误计数。在一次运行中,它可能表明您有两个错误,但是一旦解决它们,您可能会得到26个新错误。 深入研究C和C ++只是显示了Java和C#的编译诊断弱点的不良组合(尽管说Java和C#只是解决了一半的问题可能更准确)。有些警告确实应该是错误的(例如,当并非所有代码路径都返回一个值时),但它们仍然是警告,因为我想,当他们编写标准时,编译器技术还不足以使它们成为此类错误。强制检查。同样,编译器经常检查的内容超出标准所规定的范围,但仍将“标准”警告错误级别用于其他发现。通常,编译器不会立即报告他们可能发现的所有错误;可能需要一些编译才能删除所有这些编译器。更不用说C ++编译器喜欢吐出的隐秘错误, 现在添加了许多构建系统,它们可配置为在编译器发出警告时报告失败,我们只是得到了一个奇怪的组合:并非所有错误都是致命的,但有些警告应该;并非所有警告都是应有的,但有些警告已被明确地压制而没有进一步提及它们的存在;有时所有警告都会变成错误。 非编译语言仍然有糟糕的错误报告。在实际运行代码之前,不会报告Python中的Typos,而且您一次也不会真正引发多个错误,因为脚本在遇到一个错误后便会停止执行。 PHP本身具有许多或多或少的重要错误级别和异常。解析错误一次报告一次,警告通常非常严重,以至于中止您的脚本(但默认情况下不是),通知确实经常显示出严重的逻辑问题,某些错误确实还不足以阻止您的脚本,但仍然这样做,并且像往常一样,在PHP中还有一些很奇怪的东西(为什么我们要为不是真正致命的致命错误需要一个错误级别?E_RECOVERABLE_E_ERROR,我是在和您聊天)。 在我看来,我能想到的编译器错误报告的每个实现都被破坏了。真是太遗憾了,因为所有优秀的程序员都坚持认为正确处理错误非常重要,但却无法获得自己的工具来这样做。 您认为什么是报告编译器错误的正确方法?

4
非基于英语的编程语言
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在安蒂奥基亚大学哥伦比亚教授在介绍编程课程词曲,基于西班牙,面向对象的.NET语言。目的是在介绍基于英语的主流语言之前,以学生的母语教授编程概念。 还有许多其他基于非英语的编程语言,并且Stack Overflow中甚至还有一个相关的问题。关于这些语言,我有几个问题: 该网站上的任何人都学会了使用非英语语言进行编程吗?如果是这样,过渡到第一种基于英语的语言有多困难? 是否有任何基于研究的证据表明,非英语使用者使用带有母语的语言而不是基于英语的语言来学习编程更快/更好。

3
为什么在公共可访问的头文件中描述了私有变量?
好的,因此希望对程序员来说这是一个主观的问题,但这是可行的。我一直在不断拓宽我的语言和软件工程实践的知识……而且我遇到了一些对我毫无意义的事情。 在C ++中,类声明将private:方法和参数包含在头文件中,从理论上讲,如果将它们设为lib,则传递给用户以包括这些内容。 在Objective-C中,@interface几乎做同样的事情,迫使您列出私有成员(至少有一种方法可以在实现文件中获取私有方法)。 据我所知,Java和C#允许您提供一个接口/协议,该接口/协议可以声明所有可公开访问的属性/方法,并使编码人员能够在实现文件中隐藏所有实现细节。 为什么?封装是OOP的主要原理之一,为什么C ++和Obj-C缺少此基本功能?对于Obj-C或C ++,是否存在某种隐藏所有实现的最佳实践解决方法? 谢谢,

7
是否有人长期使用Python / Ruby和PHP并仍然偏爱PHP?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我通常会对捍卫PHP的文章以及所使用的论点着迷。这些类型的文章的作者经常没有提及他们对其他语言的经验。我个人很难想象有人会同时了解Python或Ruby,以及PHP,并且仍然更喜欢PHP。 因此,如果有人适合这个描述,我将很想听听为什么您更喜欢PHP而不是这两种语言。


4
PHP 6发生了什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我对PHP 5.3+中预览的PHP 6中的更改感到很兴奋。但是,我想知道为什么要花这么长时间发布PHP 6?关于它的书籍自2008年以来已经出版,并且自2007年以来就已发布有关它的消息,但是我还没有听说过alpha或beta版本。为什么释放它需要这么长时间?还是所有语言过渡到主要版本(我估计大约需要4-5年的发布时间)后,这是所有语言的处理方式吗?

2
在并行程序中处理错误的最佳方法是什么?
随着并行算法的出现,现在可能是考虑错误处理的好时机。 所以起初有错误代码。那些很烂。可以随意忽略它们,因此您可能会迟到并产生难以调试的代码。 然后是例外。这些问题一旦发生就变得不可忽视,而且大多数人(乔尔除外)更喜欢他们。 现在我们有了帮助并行代码的库。问题是,您无法像使用非并行代码那样轻松地处理并行代码中的异常。如果异步启动任务并引发异常,则没有堆栈跟踪可以展开。最好的办法是捕获它并将其注册在任务对象上(如果有)。但是,它破坏了异常的主要优势:您必须检查它们,并且可以不加任何考虑地忽略它们,而在单线程代码中,异常必然会触发适当的操作(即使这意味着终止程序)。 语言实现或库应如何支持并行代码中的错误?

11
MUMPS还活着吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 在我的第一个工作场所中,我们在PDP 11克隆(TPA 440)上使用了Digital Standard MUMPS,然后在90年代初左右,我们切换到了运行在HP-UX 9惠普机器上的Micronetics Standard MUMPS。 MUMPS还在吗?有没有人使用它?如果是,请写一些有关它的信息:您是否在字符模式下使用它,它是否充当Web服务器?等(我的意思也是Caché。) 如果您曾经使用它,您对此有什么感觉?你喜欢吗?



3
学习专门为该公司设计的编程语言
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 当您拥有XY其他可以帮助您的库,逻辑等的语言时,为什么有人会开发自己的语言以仅在该公司内部使用呢?将流程与其他内容一起使用,而不是开发自己的语言,不是很简单吗?

4
为什么python生成器和函数共享“ def”关键字?
考虑以下: def some_function(): return 1 def some_generator(): yield 1 在上面的代码中,some_function是一个函数,some_generator而是一个生成器。他们看起来很相似。 我在阅读代码时遇到的问题是,我需要在“函数”的每一行中进行扫描以寻找yield关键字,然后才能确定它实际上是函数还是生成器! 在我看来,为生成器使用其他关键字会更有意义,例如: gen some_generator(): yield 1 def对生成器和函数使用关键字有什么好处?为什么未将新关键字引入单独的函数和生成器?

5
当主要目标是依赖核心语言的框架时,学习超越核心语言的基础是否有益?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 请记住,这不是另一个“ 在移至[ 此处插入框架 ] 之前我应该​​知道多少[ 这里插入编程语言 ]?”?我想知道的是,当您的意图是在大多数时候严重依赖其框架时,学习编程语言的那些高级概念有什么好处。因此,例如,我开始使用jQuery,首先花时间真正掌握Javascript的核心概念。另外,我在书架上还有一些不仅仅涉及基础知识的书籍(例如,《 Java忍者》的秘密),而且还深入研究了该语言。当我浏览页面时,我发现其中相当一部分并没有延续到jQuery,因为我的主要目的是进行DOM操作。 Ruby和RoR也可以这样说。这些书会使我整体上成为更好的程序员吗?大概。这些主题可以帮助我更好地利用其框架吗?这就是我很难理解的地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.