Questions tagged «programming-languages»

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


8
正在通过Qt框架真正学习C ++来学习C ++ [关闭]
我的问题是,我阅读的大多数C ++书籍都几乎永远花在语法和语言基础上,例如for循环while,数组,列表,指针等。 但是他们似乎从来没有建立过足够简单的东西用于学习,却又足够实际的东西来使您理解语言的哲学和力量。 然后我偶然发现了QT,这是一个了不起的库! 但是通过他们的演示进行工作,似乎我现在正处于相反的困境。我感觉像是有钱人的儿子在父亲补贴的跑车中开着车。就像我可以构建出色的软件一样,却不知道幕后到底发生了什么。 作为我的两难选择的一个例子,是构建一个简单的Web浏览器。在纯C ++中,我什至不知道从哪里开始,但是使用Qt库,可以在几行代码中完成。 我没有为此抱怨。我只是想知道如何填补语言的基本结构和Qt框架提供的高级接口之间的知识空白?

16
您是否认为接触BASIC会损害您的思维?[关闭]
向以前接触过BASIC的学生教授良好的编程几乎是不可能的:作为潜在的程序员,他们在精神上被肢解,无法重生。 埃德斯·迪克斯特拉(Edsger W.Dijkstra) 我对Dijkstra表示敬意,但我不同意他所说/写的一切。我特别不同意35年前写的有关Dartmouth BASIC实现的链接纸上的这句话。 我的许多同事或朋友都是从BASIC开始的程序员,下面的问题给出的答案表明,许多程序员都有在BASIC进行编程的第一次经验。AFAIK的许多优秀程序员都是从BASIC编程开始的。 我不是在谈论Visual Basic或在充满资源的计算机上运行的BASIC的其他“现代”方言。我说的是在“玩具”计算机上运行的BASIC的过去,程序员不得不担心保存小的数字,这些数字不需要计算为字符串即可保存一个可观的字节,因为计算机只有几百个,或者由于缺少更强大的功能,必须使用计算后的goto以及许多其他事情,这些问题要求程序员在做某事并迫使程序员具有创造力之前要三思而行。 如果您曾经在资源有限的机器上使用过往的BASIC经验(请记住,当今的简单微控制器比1975年的计算机拥有更多的资源,您是否认为BASIC可以帮助您的头脑找到更好的解决方案,像工程师或BASIC一样,将您拖到编程的阴暗面,使您在精神上残废? 学会在充满资源的计算机上运行的编程语言,在这种计算机上,新手程序员可以做所有的事情,并且程序运行时没有大问题吗?还是更好地了解程序员在哪里不能出错? 您对BASIC的评价如何帮助您成为更好/更差的程序员? 您是否会向即将到来的程序员教授在2KB(虚拟)计算机上运行的旧BASIC? 当然,仅接触BASIC是有害的。也许您同意我的观点,即现代BASIC并不能提供太多帮助,因为现代BASIC(与其他编程语言一样)提供了使程序员没有更深入思考的功能。 附加信息:为什么选择BASIC?

1
为什么将插入号用于XOR而不是求幂?
对于以前曾经遇到过此语法问题的任何人来说,这并不是一个真正的问题,但是我看到使用插入号(^)作为XOR运算代替了广泛接受的数学幂运算而引起的大量混乱。 当然,在很多地方都可以解释和纠正插入符号的(误用)用法,但是对于插入符号为何具有不同的含义,我没有找到任何明确的资料。 是为了方便吗?一次意外?显然,各种语言的推理可能会有所不同,因此任何方面的信息都将很有见地。

5
为什么C#和Java使用引用相等作为'=='的默认值?
我已经思考了一段时间,为什么Java和C#(我敢肯定其他语言)默认引用相等==。 在我做的编程中(当然,这只是编程问题的一小部分),在比较对象而不是引用相等时,我几乎总是想要逻辑相等。我试图思考为什么这两种语言都走这条路线而不是颠倒它,并具有==逻辑上的相等性,并.ReferenceEquals()用于引用相等性。 显然,使用引用相等很容易实现,并且行为非常一致,但是似乎并不适合我今天看到的大多数编程实践。 我不想对尝试实现逻辑比较的问题一无所知,并且必须在每个类中都实现它。我也意识到这些语言是很久以前设计的,但总的问题仍然存在。 默认情况下,我只是缺少一些主要好处,还是默认行为应该是逻辑相等,并且默认返回引用相等,而该类不存在逻辑相等似乎合理吗?

6
为什么编程语言允许对变量和函数进行阴影/隐藏?
许多最流行的编程语言(例如C ++,Java,Python等)都具有隐藏或隐藏变量或函数的概念。当我遇到隐藏或阴影时,它们是导致难以发现错误的原因,而且我从未见过需要使用这些语言功能的情况。 在我看来,禁止隐藏和遮盖似乎更好。 有人知道这些概念的好用法吗? 更新: 我不是指封装类成员(私有/受保护的成员)。


11
您是否将LISP(的方言)用于实际应用?在哪里,为什么?[关闭]
尽管LISP(以及方言,例如Scheme,Common LISP和Clojure)是相当不错的编程语言,但它们并没有获得太多的行业支持。(目前看来,他们正在获得一些吸引力)。 现在,这与问题没有直接关系,您将在生产程序中使用LISP方言吗?什么样的程序,为什么?还包括与其他代码(例如C)集成在一起的用法,但是请注意,这就是您在回答中所要表达的意思。广泛的概念是首选,但具体的应用也很不错。

14
为什么对象通过引用传递?
一个正在研究面向对象的年轻同事问我为什么每个对象都通过引用传递,这与原始类型或结构相反。它是Java和C#等语言的共同特征。 我找不到适合他的答案。 此设计决定的动机是什么?这些语言的开发人员是否厌倦了每次都必须创建指针和typedef的麻烦?


10
为什么Math.Sqrt()是静态函数?
在讨论静态和实例方法时,我总是认为,这Sqrt()应该是数字类型的实例方法,而不是静态方法。这是为什么?显然,它对一个值有效。 // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); 值类型显然可以具有实例方法,就像在许多语言中一样,有一个实例方法ToString()。 从评论中回答一些问题:为什么1.Sqrt()不合法?1.ToString()是。 某些语言不允许对值类型使用方法,但是某些语言可以。我正在谈论这些,包括Java,ECMAScript,C#和Python(已__str__(self)定义)。这同样适用于其他功能,例如ceil(),floor()等等。



9
有几种类型的编程语言?[关闭]
基本上,我想学习很多编程语言以成为一名优秀的程序员。我知道只有极少数的深度和我希望有人能详细阐述了多少类或类型的编程语言有。就像您必须分组学习时,如何将它们组合在一起。 来自Java背景,我熟悉静态类型,但是我知道,除了动态类型之外,可用语言还必须有如此多的种类,如果可能的话,我希望可以对其进行分类。

18
您什么时候可以称自己为X语言擅长?
这可以追溯到我与女友的对话。我试图告诉她,我只是对自己的编程语言(C ++)感到不足以称自己为好。然后她问我:“嗯,你什么时候认为自己足够好?” 这是一个有趣的问题。我不知道该告诉她什么 所以我问你。 对于任何编程语言,框架之类的东西,什么时候坐下来,看看您所做的事情,然后说:“嘿,我实际上很擅长此事。” 您如何定义“好”,以便您可以诚实地告诉其他人,“是的,我擅长X”。 此外,您是否通过比较其他人可以做到这些结论? 附加信息 我已经读过规范论文,说明您是该领域的专家需要花费一万小时的时间。(向知道此文件又称什么的人提供支持) 我还阅读了《编码恐怖》中有关采访人的各种文章。有人说,“不能在框架之外运行”。因此它们对于该框架可能是“好”的,但在语言方面则并非如此。这是真的?

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.