Questions tagged «programming-languages»

编程语言是一种人工语言,旨在表达可以由机器执行的计算。**请注意:**与Stack Overflow上的其他地方一样,资源和教程推荐请求,事物列表请求(“哪些语言具有此功能...”)以及过分基于意见的观点(“什么是最好的”) ...“)问题不在主题之列。

18
配置文件在什么时候成为编程语言?
一段时间以来,我一直在考虑配置文件及其与代码的关系,根据风的日子和方向,我的观点似乎会改变。尽管我继续回到学习Lisp时的最初认识,但越来越多的东西:数据和代码之间几乎没有什么区别。对于配置文件,这似乎是双重事实。当从正确的角度看时,Perl脚本只不过是perl的配置文件。这往往会对诸如QA和分工之类的任务产生相当严重的后果,例如谁应该负责更改配置文件。 从配置文件到完整语言的爬取通常很慢,并且似乎是由对通用系统的渴望所驱动。大多数项目似乎从一些小的配置项目开始,例如在哪里写日志,在哪里查找数据,用户名和密码等。但是随后它们开始增长:功能可以被打开或关闭,操作的时间和顺序开始受到控制,不可避免地,有人要开始向其中添加逻辑(例如,如果机器是X,则使用10;如果机器是Y,则使用15)。在某种程度上,配置文件变成了特定于域的语言,并且在该语言中编写得不​​好。 既然我已经四处奔波,请问以下问题: 配置文件的真正目的是什么? 是否应该尝试使配置文件保持简单? 谁应该负责对它们进行更改(开发人员,用户,管理员等)? 是否应该对它们进行源代码控制(请参阅问题3)? 正如我之前所说,我对这些问题的答案在不断变化,但现在我在想: 允许非程序员快速更改大量行为 是的,任何粗粒度的内容都应该在代码中 用户应负责配置文件,程序员应负责配置文件和代码之间的配置层,以便对应用程序进行更精细的控制 不,但是中间的细颗粒应该是


17
Haskell之后要学习什么语言?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 作为我的第一门编程语言,我决定学习Haskell。我是分析哲学专业的学生,​​Haskell允许我快速而正确地创建感兴趣的程序,例如,用于自然语言解析的转换器,定理证明和解释器。尽管我只从事了两个半月的编程,但我发现Haskell的语义和语法比更传统的命令式语言更容易学习,并且对大多数构造感到满意(现在)。 但是,在Haskell中进行编程就像是巫术,我想扩展我的编程知识。我想选择一种新的编程语言来学习,但是我没有足够的时间来挑选一种任意的语言,删除它并重复。所以我想在这里提出这个问题,以及关于我要寻找的语言类型的一些规定。有些是主观的,有些是为了简化从Haskell的过渡。 强类型系统。在Haskell中,我最喜欢的编程部分之一是编写类型声明。这有助于构造我对单个功能及其与程序整体关系的思想。这也使非正式的推理程序变得更加容易。我关注的是正确性,而不是效率。 强调递归而不是迭代。我在Haskell中使用了迭代构造,但是递归地实现了它们。但是,与复杂的迭代过程相比,了解递归函数的结构要容易得多,尤其是在使用组合器和高阶函数(例如图,折叠和绑定)时。 奖励学习。Haskell是一种有用的工作语言。这有点像阅读Kant。但是,几年前我没有使用C的经验。我不是在寻找C。这种语言应该执行一种概念上有趣的范式,就我完全主观的观点而言,C语言不是。 权衡答案:当然,这些只是笔记。我只想回复所有给出正确答案的人。您一直很有帮助。 1)若干答复表明,强调递归的强大的静态类型语言意味着另一种功能语言。尽管我想继续与Haskell进行紧密合作,但是camccann和larsmans正确地指出,另一种这样的语言会“过度简化过渡”。这些评论非常有帮助,因为我不想用Caml写Haskell!在证明助手中,Coq和Agda都很有趣。特别是,Coq将为构造逻辑和形式类型理论提供扎实的介绍。我花了一会儿时间来研究一阶谓词和模态逻辑(Mendellsohn,Enderton和某些Hinman),所以我可能会对Coq感到很多乐趣。 2)其他人则非常喜欢Lisp(通用Lisp,Scheme和Clojure)。据我了解,Common Lisp和Scheme都有出色的入门资料(关于Lisp和The Reasoned Schemer,SICP)。SICP中的材料使我倾向于使用Scheme。特别是,通过SICP进行的计划将涵盖不同的评估策略,懒惰的实现,并有机会关注诸如延续,解释器,符号计算等主题。最后,正如其他人指出的那样,Lisp对代码/数据的处理将是全新的。因此,我非常倾向于选项(2),即Lisp。 3)第三,序言。Prolog有很多有趣的材料,它的主要领域正是我感兴趣的领域。它的语法简单,易于阅读。目前,我无法发表更多评论,但是在阅读了Prolog的概述并浏览了一些入门资料之后,它的排名为(2)。看来,Prolog的回溯一直被黑客入侵Haskell! 4)在主流语言中,Python看起来最有趣。蒂姆·耶茨(Tim Yates)使这些语言听起来很吸引人。显然,Python通常是针对一年级CS专业的学生而教。因此它在概念上丰富或易于学习。我必须做更多的研究。 谢谢大家的建议!看起来像Lisp(方案,Clojure),Prolog或像Coq或Agda这样的证明助手是推荐的主要语言。

5
异步,非阻塞,基于事件的体系结构之间有什么区别?
之间有什么区别: 异步, 非阻塞,和 基于事件的架构? 事物既可以是异步的又可以是非阻塞的(基于事件的)吗? 在编程中,最重要的是要拥有一些东西:异步,非阻塞和/或基于事件的(或全部基于3个)? 如果您可以提供示例,那就太好了。 有人问这个问题是因为我在阅读有关类似主题的出色StackOverflow文章,但没有回答我上面的问题。

6
面向对象编程的替代方法?
OOP可能是当今软件设计中最常用的编程范例。我的问题是–还有哪些其他范式可以与之竞争并且可以代替OOP?为了澄清这个问题,我不是在问其他范式。有很多,但我想知道是哪一个… 已经在实践中使用,不仅在理论上。 可以与OOP竞争,因此可以在最小的痛苦下用于大型项目。 可用于开发具有业务逻辑,数据库等的桌面应用程序。 不能与OOP一起使用,而是作为OOP的替代。 并且,如果有的话,它的优缺点是什么,为什么它比OOP更好/更糟糕,哪种语言是最好的使用方式,如何在流行的语言中使用它,具有任何设计模式,是否可以完全取代OOP?

4
香草是什么意思?
该香草形容词出现在许多地方:纯java的香草,香草的javascript:这是什么究竟是什么意思? 从上下文来看,似乎代表着某种“简单”。 当一个特定的代码考虑香草和时是不是?普通,喜欢不包裹在框架中吗?

2
什么是普通语言?
我正在尝试理解语言级别的概念(常规,上下文无关,上下文敏感等)。 我可以很容易地查找它,但是我发现的所有解释都是大量的符号并谈论集合。我有两个问题: 您可以用语言描述什么是普通语言,以及这些语言的不同之处吗? 人们在哪里学习了解这些东西?据我了解,这是形式数学吗?我在uni上有几门课程使用了它,几乎没有人理解它,因为辅导员只是以为我们知道它。我在哪里可以学习到它,为什么人们会“期望”在这么多来源中了解它?就像教育上存在差距。 这是一个例子: 属于该集合的任何语言都是字母上的常规语言。 语言如何“超越”任何事物?


28
是否存在其他具有非零索引数组位置的常见“ C类”或非“ C类”语言?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 C编程语言被称为零索引数组语言。使用可以访问数组中的第一项0。例如double arr[2] = {1.5,2.5},数组中的第一项arr位于位置0。arr[0] === 1.5基于1的索引是什么编程语言? 我听说过这些语言从1而不是0开始进行数组访问:Algol,Matlab,Action!,Pascal,Fortran和Cobol。完成了吗 具体来说,基于1的数组将使用1(而不是0)访问第一项。

10
C#语言名称的由来
我是C和C ++程序员,现在正尝试学习C#。我已经购买了Wrox出版的《Professional C#》一书。 从C迁移到C ++时,我不确定为什么++要添加到C。后来我意识到,这++是一个增量运算符,它被添加到C中只是为了提供“面向对象的扩展”。 在C#中,意义#何在?


10
FP和OO是否正交?
我一次又一次听到,我正在尝试理解和验证FP和OO是正交的。 首先,两个概念正交是什么意思? FP尽可能地鼓励不变性和纯净性,而OO似乎是为状态和突变而构建的–命令命令编程的组织性略微?我意识到对象可以是不可变的,但是OO似乎暗示着我的状态/变化。 他们似乎是相反的。这如何影响它们的正交性? 像Scala这样的语言可以轻松实现OO和FP,这是否会影响这两种方法的正交性?

30
有什么好例子可以向非程序员展示以解释编程的“外观”?
有一天,我的一个朋友问我在编程时是否只是看数字列表,或者它是如何工作的。我试图解释说,它通常更像是数学公式,加上了奇怪的英语单词,并且通常都可读。但这是一个非常模糊的解释,对非程序员来说并没有真正解释太多。 但这让我思考了什么将是一个很好的例子。不是因为我想教她编程或其他方面的知识,而只是想让她了解一下程序代码的“外观”。 这让我想知道什么将成为一个很好的例子。事实证明,这非常困难。 我首先想到的显然是一个简单的“ Hello World”程序。但这确实没有显示任何有用的信息。它并没有真正表明我们如何使用函数,变量或控制流程结构,例如if或while使其真正执行某项程序。没有逻辑。该程序没有任何反应。 因此,也许像计算质数之类的例子将是一个更好的例子。但是话又说回来,那可能太过理论化和不切实际了……(那有什么好处?与编写“真实”程序有什么关系?)而且,里面也没有重要的控制流程逻辑。这只是一连串的数学运算。 而且,应该使用哪种语言? 理想情况下,我认为它不必是一种非常“干净”的语言。但是,它可能应该使结构清晰。如果这样做,则一定程度的噪音和杂波可能会很好。出于这个原因,也许C ++之类的东西实际上可能比Python更好的例子。明显的花括号和类型说明符是明显的“钩子”,以帮助解释程序的结构,或强调它不仅是几乎可以读成英语的简单语句。 但是,对于C ++,我们还陷入了一些彻头彻尾的怪异语法。为什么std::cout << x用来打印x?为什么不使用“常规”函数调用语法?并printf没有什么好用的,它具有奥秘的格式字符串,并且缺乏可扩展性(我是否想通过使用char*字符串来使程序复杂化?或者我使用std::string并解决调用似乎不必要的操作s.c_str()来获取可以打印的字符串)printf? 毕竟,更高层次的语言可能会更好。但是哪一个呢?又为什么呢 我知道这里有很多类似的问题,涉及使用哪种语言/示例程序来教授编程。但是我认为这里的要求是不同的。在教授编程时,我们最需要的是简单性。我们希望避免任何尚未讲授的内容。我们希望确保学生能够理解屏幕上的所有内容。 我对简单性本身不感兴趣。而是给“局外人”一个“程序看起来像什么”的想法。程序并不简单。但是它们通常确实表现出某种疯狂的结构和方法。哪种语言/程序最能突出这一点? 编辑 谢谢您到目前为止的所有建议。你们中的某些人对我的角度有所不同。 也许有个例子。我不能驾驶飞机,但是我对驾驶舱的外观以及飞行员飞行时的行为有基本的了解。 而且我不是一个训练有素的木匠,但是当我看到锯子或锤子时,我会知道。 但是,例如,当您看到与电影中的编程有关的内容时,通常只是充满垃圾的屏幕(如“矩阵”中的绿色文本)。它看起来并不像正常人真正能做的那样。没有任何可识别的东西。不是程序员的人只是认为这是黑魔法。 我不想教她飞行或编程软件。但我想给她一个基本的参考框架。只是一个想法,“啊,这就是您要使用的东西。因此,不仅仅是屏幕上的随机符号和数字”。if与矩阵样式的随机符号和数字相比,即使只是显示简单的语句也将是一个启示。 有人建议解释一种算法或使用伪代码,但这是我要避免的。我想要的东西可以简单地显示实际代码的外观,就像您不必成为木匠去看锯子并了解其含义和原理一样。 小时候,我们曾经在意大利度假。下来的路上,飞行员让我进入了飞机的驾驶舱。当然,我没有学会如何驾驶飞机。但是我确实看到了飞行员的世界。我了解了它们如何使飞机起飞,飞行员实际上做了什么。 那真的是我要做的。我的朋友对学习编程没有兴趣,我也不想强迫她理解源代码。但是她很好奇我使用哪种工具或实体。是矩阵样式的符号在屏幕上滚动吗?纯数学?散文形式的英语? 我感兴趣的是传达对“我工作时的样子”的高度理解。

18
为什么“如果”陈述被认为是邪恶的?
我只是来自简单设计和测试会议。在一个会议中,我们讨论了编程语言中的邪恶关键字。 提出该主题的科里·海恩斯(Corey Haines)坚信,这种if说法绝对是邪恶的。他的替代方法是使用谓词创建函数。你能告诉我为什么if是邪恶的。 我了解您可以编写非常丑陋的代码if。但是我不相信那有那么糟糕。


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.