Questions tagged «programming-languages»

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

4
如何将依赖项注入集成到语言中?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我一直在思考如何将依赖项注入更好地直接集成到类似C#的语言中。我想出一个潜在的解决方案,希望听听您的意见。我没有使用很多依赖注入框架,所以可能有些东西我忽略了 无论如何,该想法是能够使用关键字将属性声明为“可注入”。当实例化一个对象,并且未通过构造函数或对象初始化程序初始化该属性时,它将从某些全局服务中请求该属性类型的实例。 同样,您可以为该服务注册不同类型的处理程序,以便可以实例化注入的属性类型。 使用这种IMO架构的好处是它相当灵活且易于使用。不利之处在于,每次您启动带有注入的类时,对单身人士进行标注都可能会有一些开销。 再说一次,对于在高性能解决方案中经常实例化的类来说,这只是一个问题,所以这不是什么大问题。在这些情况下,也许您可​​以使用某种工厂。 思想,问题,问题,更好的主意? 码 public class SomeClass { public SomeClass() { //implicit behavior if Animal is not set in constructor or initializer this.Animal = GlobalInjector.Get(this,typeof(Mammal)) } public injectable Mammal Animal { get; set; } } GlobalInjector.Register(typeof(Mammal), () => return new Mammal(someParameter));

6
我应该选择一种功能编程语言吗?
最近,我更加关注编写代码的方式。在阅读了几本关于设计模式的书(我敢肯定它们的过分执行)之后,我已经将思想大大地转向了封装那些改变的东西。我倾向于注意到我写的接口更少,而代码则更多地面向方法,在这里我喜欢用谓词,动作和其他委托任务将生活融入旧的类中。我倾向于认为通常是更改的动作,因此我将其封装。我什至经常(尽管不总是如此)将接口分解为单个方法,然后我更喜欢使用委托来完成任务,而不是强制客户端代码创建新类。 所以我想它然后打我。我应该进行函数式编程吗? 编辑: 我可能对函数式编程有一个误解。 目前,我选择的语言是C#,并且来自C ++背景。我是一名游戏开发人员,但目前没有工作。 我对建筑充满热情。我的优点是干净,灵活,可重用和可维护的代码。我不知道这些方法是否使我中毒,或者是否更好。我是发烧还是应该继续发烧?我了解这可能是关于“使用正确的工具完成工作”的问题,但是我想听听您的想法。 我应该选择一种功能语言吗?我担心的因素之一是离开Visual Studio的舒适感。

7
函数式编程的论点
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我最近一直在有趣地学习F#(我是VB.NET/C#开发人员),我真的很喜欢它提供的一些功能。从理论上讲是这样。但是我想不出要选择使用F#而不是C#进行编码的方案。有任何想法吗?

4
有什么理由不能将延迟初始化内置到Java中吗?
由于我在服务器上使用的用户绝对没有非持久状态,因此我们在每个请求中都会推出我们拥有的每个与用户相关的对象。 因此,我经常发现自己对可能未使用的对象的属性进行了延迟初始化。 protected EventDispatcher dispatcher = new EventDispatcher(); 成为... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } 有什么理由无法将其内置到Java中吗? protected lazy EventDispatcher dispatcher = new EventDispatcher(); 就像下面的评论中提到的那样,我意识到一种语言在理论上可以发展为包含您想要的大多数内容。我正在寻找一种可能性的实用度量。这会与其他功能冲突吗?实现是否足够简单,可以很好地与JVM一起使用?甚至,这是个好主意吗?

4
与金融部门最相关的编程语言?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我是大学一年级学生,从事软件工程/金融双专业。我一直在独自学习编程,并且到目前为止对php已有一定的了解。我想知道你们认为最相关的编程语言是用于金融/投资银行吗? 我已阅读此主题:https : //softwareengineering.stackexchange.com/questions/13109/books-on-developing-software-for-financial-markets-investment-banks 我想开始学习/阅读一种语言(基本知识不是财务/数量的东西),从而为将来的财务/数量的东西奠定基础。

6
我应该专注于深入还是广泛[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我已经成为专业开发人员了半年多了,对这个世界真的没有大学感到惊讶。我在业余时间继续学习,但我想知道应该集中在哪里? 重点1)我公司使用的开发堆栈。我日常开发中最快的回报。#最深 焦点2)具有相同范例的不同语言。看看我是否可以概括我的知识和思维方式。 焦点3)不同的语言,不同的范式。扩大我的疆界,学习做事的新方法。#最广泛 如果有人有不同的关注点,请放在那里。

7
选择(对吗?)技术和环境
我们是两个处于新的Web产品开发边缘的开发人员。 我们都是精益启动方法的拥护者,并且希望练习持续部署。 难题来了,我们都来自C#/ Windows背景,我们需要在以下两者之间做出决定: 坚持使用.NET和Windows,我们将不会浪费时间学习新技术,而是会全力以赴地进行开发。 切换到Ruby on Rails和Linux,后者在快速升级和广泛的开源支持方面享有盛誉。不利的一面是,我们将需要在学习Ruby,Rails和Linux上付出很多努力。 你会怎么做?我们还应考虑哪些其他因素?


5
Ruby on Rails / Grails是最快建立网站的最快框架吗?
我正在考虑将Grails用于新网站,但可以使用其他/新的编程语言和框架。我已经使用J2EE / JSF2,ASP.NET和PHP进行了开发。Grails或Ruby on Rails几乎是使功能快速启动和运行的最佳方法吗? 一些初步的想法: DJango看起来与RoR / Grails类似,我会考虑的 GWT是一个有趣的概念,但是周转时间似乎并不那么快 谢谢-乔恩

5
衡量发展速度的方法
我见过很多测试来衡量编程语言的执行速度的测试,但是我从未发现过衡量开发速度的测试。 我听说使用动态语言时,开发速度有所提高,但是有什么证明吗?我并不是要说动态语言效率不高,但是我想看看科学研究的结果(如果存在的话)。 更好的是有关维护设施的信息。有些语言比其他语言更容易调试吗? 编辑:我最感兴趣的是语法紧密的两种语言之间的差异。例如,我想用C编程通常会比用Java编程慢。但是Java编程比C#编程快吗?

8
为什么大多数职位提供给<language here>开发人员,而不是一般的开发人员?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在理想的世界中: 帕特里克·麦肯齐(Patrick McKenzie)在一篇出色的文章《别称自己为程序员》和《其他职业建议》中解释说,语言无关紧要: 开发人员通常是解决问题的人。开发人员不是以特定语言编写代码的人。 企业不关心您所知道的语言。如果他们需要聘请使用特定语言编写的项目的开发人员,并且他们的候选人经验丰富,但从未用这种语言编写过代码,则仍会聘用他。 根据我作为开发人员和必须雇用其他开发人员的经验,观察到的结果非常相似: N年的Java经验或N年的C#经验无关紧要。重要的是,候选人知道如何解决问题,知道意大利面条式代码和具有深思熟虑的体系结构的干净代码之间的区别,等等。 我不在乎您以前使用的语言。对于一个C#项目,我宁愿雇用一个专业的开发人员,而不是只懂C#并且非常不懂C#的新手花一生来编写Java,Python和Ruby on Rails代码。 您使用一种语言获得的知识和经验几乎可以在任何其他语言中重用。 一位经验丰富的开发人员使用Ruby on Rails进行Web开发,并在余下的职业生涯中使用Oracle编写Java桌面应用程序,非常适合使用Microsoft SQL Server的ASP.NET MVC项目。因为这个人已经知道她完成这项工作所需的一切,除了一些特定的东西和语法上的差异。 另一方面,只做过几个ASP.NET MVC小型网站的人根本不适合,因为她可能不完全了解MVC架构,可能不知道什么是SQL性能分析,并且可能缺少其他一些基本知识。知识。 不要告诉我我无法解决使用CodeIgniter的PHP网站的一个小问题,因为我以前从未使用过CodeIgniter。 在实践中: 在实践中,当我寻找自由职业者时,当我看到一般的工作机会时,它们是非常特定于语言的。 有些人会寻找在Magento有两年经验的PHP开发人员。其他人将寻找具有至少三年VB.NET经验的人,如果您给他们发送简历,提到您已经进行了C#开发六年,却没有提及VB.NET,则他们不会打扰回答。如果他们要求有Firebird经验的人,他们将不会听到您十年的Oracle经验。 为什么理论和我所描述的帕特里克·麦肯齐(Patrick McKenzie)是常识与工作机会的真实世界之间存在这种差异?

4
制作跨平台库应使用哪种语言?[关闭]
想要改善这篇文章吗?提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我想构建一个SyncML解析库(无UI),该库应该能够基于主机应用程序提供的信息(由库的方法提供)构建消息。同样,该库应该能够对宿主应用程序中的方法进行回调。 我希望能够对此进行编译,并使其在尽可能多的平台上可用:Windows,Windows Phone 7 OS,OSX,iOS,Linux,Android,BlackBerry。基本上是尽可能多的平台。 优先考虑的是使它在移动设备上可用。 问题: 我应该使用什么设置?(编程语言,编译器,IDE等) 如何为这些不同的平台编译该库,以及如何连接到该库? 还有其他信息吗?例如,涉及跨平台开发主题的文章? 我之前没有做过这样的跨平台项目,因此欢迎向我提供正确方向的任何可用信息。 我本人在C#/。NET和Objective-C方面都有背景。

11
设计理想范围文字
我一直在思考如果要设计一种语言,我将如何设计“完美”范围文字。对于您不知道的语句中的范围文字,它表示一个值范围,例如1-4。它们最常用于for / foreach循环 似乎应该考虑几个问题 支持包含范围和排除范围,将+1或-1附加到端点似乎有点笨拙且容易出错。 支持步进,因此您可以设置例如偶数或奇数范围 可读性,范围文字描述的内容应该显而易见 明确,范围文字所描述的内容应该完全明确 默认值可能是从包含值到排除值,因为在大多数情况下,这是用于遍历数组等的方式。 无论如何,我所见过的范围文字的一个示例是Ruby,其形式为1..3表示排他性(最后),1 ... 3表示排他性(最后)。您也可以执行1..10.step(5)。经过仔细考虑后,我发现该方法有一些我不喜欢的地方(从我对红宝石的有限了解) 您只能在最后描述包含式和排除式。在描述大多数情况时,它似乎并不一致。 仅需额外增加一个。似乎是使难以看清范围是包含范围还是排除范围的秘诀。我不了解你,但是点变得模糊起来了:) 为范围添加表示法之类的方法似乎将文字的概念与类的概念混合在一起,这似乎有点不一致(即使将范围编译为一个类) 无论如何,在考虑其他选择之后。我想出了这个 [5..1] 5,4,3,2,1 [1..5 [ 1,2,3,4 ] 1..5] 2,3,4,5 [ 0..5..20] 0,5,10,15,20 等等。我喜欢它,因为[通常会否定一个集合,即使这样与集合形成对比,它也很适合。 我有点担心的一件事是使排他性/包含性指示符是否强制性,即,如果只写1..5,则默认值为1,2,3,4,因为这是数组等的最常见情况。 。它更容易阅读,但更具针对性,如果您不得不写[1..5 [您会早日了解它们的工作原理。 那么,您认为我涵盖了大多数基础,却忽略了某些内容吗?您会否使[]为强制性?您会在编程语言中设计范围文字吗? 候选人 括号样式:[0..10 [ ,带有步骤: [0..5..20 [ 间隔符号:[0..10) ,步长:[0..5..20) 感叹为排他。0 ..!10,含步骤:0..5 ..!20 不同的步骤。0 ..!20,5 但是,这将使默认值* 0..10'包含在内 罗:[0至!20 x 5] …

1
用于推断类型参数的类型参数的技术名称?
设置:假设我们有一个名为type的类型Iterator,该类型具有type参数Element: interface Iterator&lt;Element&gt; {} 然后我们有一个接口Iterable,该接口具有一个将返回的方法Iterator。 // T has an upper bound of Iterator interface Iterable&lt;T: Iterator&gt; { getIterator(): T } Iterator泛型的问题是我们必须为其提供类型参数。 解决此问题的一种方法是“推断”迭代器的类型。以下伪代码表达了这样的想法:存在一个类型变量Element,该类型变量被推断为Iterator: interface &lt;Element&gt; Iterable&lt;T: Iterator&lt;Element&gt;&gt; { getIterator(): T } 然后我们在这样的地方使用它: class Vec&lt;Element&gt; implements Iterable&lt;VecIterator&lt;Element&gt;&gt; {/*...*/} 这个定义在其定义中Iterable没有使用Element任何其他地方,但在我的实际用例中却使用了。使用的某些函数Iterable还需要能够约束其参数以接受Iterables,该s仅返回某些迭代器,例如双向迭代器,这就是为什么返回的迭代器被参数化而不是元素类型的原因。 问题: 这些推断的类型变量是否有确定的名称?整个技术呢?由于不知道特定的术语,因此很难在野外搜索此示例或了解特定于语言的功能。 并非所有具有泛型的语言都具有此技术;这些语言中有类似技术的名称吗?

4
拥有诸如yield这样的生成器语言设施是一个好主意吗?
PHP,C#,Python和可能的其他几种语言都有yield用于创建生成器函数的关键字。 在PHP中:http://php.net/manual/en/language.generators.syntax.php 在Python中:https://www.pythoncentral.io/python-generators-and-yield-keyword/ 在C#中:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/yield 我担心作为一种语言功能yield会破坏一些约定。其中之一就是我所说的“确定性”。该方法每次调用都会返回不同的结果。使用常规的非生成器函数,您可以调用它,并且如果给定相同的输入,它将返回相同的输出。使用yield时,它会根据其内部状态返回不同的输出。因此,如果您在不知道生成函数的先前状态的情况下随机调用生成函数,则不能指望它返回某个结果。 这样的功能如何适应语言范式?它实际上违反了任何约定吗?拥有并使用此功能是个好主意吗?(举例说明什么是好事,什么是坏事,goto这曾经是许多语言的功能,现在仍然是,但是它被认为是有害的,因此已经从某些语言(例如Java)中消除了)。编程语言的编译器/解释器是否必须突破任何约定才能实现此功能,例如,语言是否必须实现多线程才能使此功能正常工作,或者可以不使用线程技术来完成?

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.