更聪明的编译器,语言和框架是否使数字程序员成为可能? [关闭]

StackOverflow https://stackoverflow.com/questions/428571

  •  06-07-2019
  •  | 
  •  

我们拥有的越来越多的高级编译器,语言和框架要么自动执行任务,要么隐藏某些错综复杂的错误,它们最终会让我们成为程序员的笨蛋吗?

Jim C 给出了以下计算器的类比:

  

最近有人提取平方根,   用纸和笔?我们使用了   计算器或简单调用函数   用我们最喜欢的编程语言。   我们当中有多少人知道什么   计算器甚至功能?

那么为什么我们都不告诉我们的孩子忘记学习数学,这就是我们计算器的用途?难道这不会让我们的孩子变得笨拙吗?

有帮助吗?

解决方案

他们没有让优秀的程序员变得笨拙,他们会让他们更有成效;但是他们让笨蛋人能够编程并认为他们是伟大的程序员。

澄清:我没有一个愚蠢的准确定义。从愚蠢到我的意思是一般的事情,那些不应该真正成为程序员或者应该尝试学习重要事物的人。我见过很多人无法真正编码,只是从这里和那里复制东西。软件质量评估并不容易。他们最终构建了一个糟糕的软件,以某种方式工作(由于存在良好的工具),所以他们不会失去工作,他们认为他们是优秀的程序员,因此,永远不应该尝试学习任何东西。相信我,我在每个优秀的开发人员中都看到过一件事:“他们从不停止学习,他们也不去学习完成工作所需的一段代码。”那些我谈过的人从不试图学习任何超出他们需要的东西,而伟大的工具减少了这种“需要”。

这并不意味着IDE很糟糕。我爱他们并认为他们应该尽可能地发展。

其他提示

我认为他们允许数字程序员,他们不会让数字程序员。

农民是否因为使用自动化机器种植,收获和保持庄稼而笨拙?

良好的任务自动化只会让程序员更有效,而不是笨拙。

  

那么为什么我们都不告诉我们的孩子忘记学习数学,这就是我们计算器的用途?难道这不会让我们的孩子变得笨拙吗?

计算器是一种允许您执行某些任务的工具。当然你可以进行复杂的数学和多变量积分,但是如果不学习数学,你怎么知道你需要在给定的时间执行该任务?

与编程和SDK相同,你可以使用预定义的代码投入大量的花里胡哨,但是当你需要写一些东西来解决问题时,世界上所有的工具和自动化都会赢得'帮助你(无论如何,人工智能不是那么先进;)。

平均值上,是的。 :)

他们不会让我们数字程序员。他们所做的是允许有更多愚蠢的程序员(我想这意味着,平均而言,我们是笨蛋。)拥有更好的工具意味着没有经验和对CS概念的阴暗理解的人仍然可以生成代码最终工作并做一些有用的事情。在汇编时写入是不可能的,但是在写入VB时就是这样。 (当然,如果一个经验不足的人正在编写大型应用程序,最终在他们糟糕的架构的重压下崩溃,那么最终发生WTF式灾难的可能性会更大。)

不可否认,“愚蠢”在这里使用是一个煽动性的词。仅仅因为有人知之甚少并不会使他们变得愚蠢,这只意味着他们缺乏经验。但要理解这一点。

我认为更快的机器会让程序员变得更糟......现在大多数程序员花费很少的时间编写最佳代码。编译器无法将错误的代码优化为优秀的代码。

快速的机器意味着糟糕的程序员可以摆脱糟糕的代码,因为没有人知道它的坏处。在过去,代码必须经过处理和改进,以便它能够以足够快的速度运行,以便以可接受的方式工作。

没有

智能编程器让智能程序员专注于真正重要的事情,比如设计好的软件。

s/make/allow/

少一点滑稽:他们是工具。 工具不做任何事情,并且他们不会使任何工匠变得更好或更糟。强大的工具也不是 - 它们只是作为杠杆,放大了特定工匠的能力(或缺乏)。

有些编程工具可以降低进入门槛,如果不是软件工程专业,那么至少可以让应用程序运行。缩短生产工作(或“工作”)应用程序所需的思维量会削减两种方式:主管专家可以从scut工作中解放出来并且可以做很多事情,但是新手的笨手笨脚有时候会让生产中的代码变得糟糕如果没有“聪明”的话,就永远不会工作工具。后者的影响可能比前者在塑造BASIC,VB,PHP以及最近一系列MVC快速开发框架的声誉方面产生了更大的影响 - 实际上对于这类工具的概念也是如此。

通过 smarter 表示自动。做一个重复性的工作不会让任何人更聪明,所以答案是没有

让我通过使用计算器示例进行扩展。用笔和纸计算平方根的技术仅仅是可以学习的过程。它不会让你更聪明知道这个过程,它只是让你在没有计算器的情况下计算平方根。

现在,如果您发现计算平方根的算法,现在 会让您变得聪明。

与我们的编程工具相同。为您做内存管理的语言不会让您变得愚蠢,也不能让您自己进行内存管理,这会使您变得更聪明。

这使得技能较低的程序员更容易进入该领域。它不会成为一名优秀的程序员。如果他们忽略可能提高效率的工具,他们就会愚蠢。

计算机正在加强设备。所以愚蠢变得愚蠢,聪明变得更聪明。

只有你允许他们这样做。

如果你学到了一些困难和挑剔的东西(例如我的Tandy 102笔记本电脑),即使使用更智能的工具,你仍然会想到这种模式。

当然,依靠工具来完成你的工作很容易,而且很多,我很感激。

例如,您不会教人们如何使用台锯和钻床进行木工 - 您可以从手锯和螺旋钻或小型手钻开始。当你转向电动工具时,你不会做蠢事(tm)。

依靠这个工具很棒 - 但是知道如何在没有工具的情况下这样做也很重要。

不,但确实有更好的程序和代码。

我认为在更高级别的语言中技能是不同的,你需要更多地考虑抽象,需要担心更多的API,并且人们期望他们的软件具有更高的质量水平。由于上述原因,程序员面临着不同的挑战,工具正在跟上这些挑战。

他们不一定会成为数字程序员,但他们可以使程序员变得懒惰。我发现自己这样做有时只是急于完成一些代码并依赖编译器来帮助我找到我的所有错误而不是一开始就做对。

顺便说一下,这不是推荐的做事方式。通常需要更长时间。

好的,我拥有的前两台电脑,我自己制造。那很聪明,我不太确定现在好好利用我的时间。我在80年代早期编写了汇编程序和BASIC程序,再次智能化,现在不那么聪明。

我在这里得到的是上下文已经发生了变化,在计算中我们必须交换知识深度的知识深度,以及必要的“减少”。为了支持“今日计算”所涵盖的应用程序的大量复杂性和广度,我们也被迫在更高层次的抽象中工作。一方面,我们看到域应用程序专家使用高度抽象的工具来提供非常好的解决方案,另一方面,我们看到计算技术/编程专家可以生成能够推动整个计算行业发展的优秀代码。称任何一方都愚蠢是煽动性的,可能是辩论中唯一的愚蠢行为。

在这种情况下减少只是允许更多的受众使用现代计算机的有效工具。这是一件好事,硬核程序员不应该感到受到威胁,它毕竟是他们的宝贝。

平均来说,是的,他们让程序员变得笨拙。但这只是因为它们使编程更加平易近人,而不像我们那样聪明,这降低了平均“智能”。

: - )

一位嘲笑现代开发环境便利性的智能程序员可能并不那么聪明。

阿瓜?不必要。如前所述,拥有更智能的工具允许开发人员专注于更重要的事情,例如使应用程序正常运行。我自己职业生涯中的一则相关轶事:

我不是一位熟练的数学家。我没有预先计算出来(好吧,这是因为我从未完成过我的作业),而且在一些非常基本的物理公式(例如计算摩擦力)上甚至有点生疏。这是因为我完全没有实践,这只是因为我从不使用它。

以衍生物为例。如果你让我找到一个函数的衍生物,我会找到我的TI-89因为我没有最模糊的线索如何做到这一点。但是 - 我认为这更重要 - 我知道如何使用它。我知道它在哪里有用,为什么要使用它等等。点积是另一个例子。我知道如何使用它来计算3D空间中曲面的镜面反射,但我不知道如何手动计算它因为我从来不需要。

我不会称自己为笨蛋。可能还没有实践,但同样有能力。

不,它类似于类固醇(和其他性能增强药物) - 它们使一个伟大的运动员更好,但他们不能让像我这样的人在10岁以下跑100米,即使我吃了整个药房。所以,上帝的IDE,语言或框架可以让你成为一个更好的程序员,但如果你只依靠它来做这项工作,那你就麻烦了。

我不这么认为。更复杂的工具让我们的思绪集中在更有趣的问题上。

对于我们这些已经学会完成上述任务或了解过去所述错综复杂的人,我相信它只会让我们更有效率。我们可以更自由地担心其他/更重要的事情。我们可能倾向于忘记“当时有多难”。或抱怨今天的新程序员是多么幸运。

对于我们这些刚刚开始并且没有学习过这些细节的人,我相信它只是让我们成为一个不同的品种。不是笨蛋,只是我们在不同的角度看待不同的问题。

然而,它确实降低了进入障碍,从而使大众更容易接近编程。这是好事还是坏事都值得商榷。

是的,但没关系。最近有人用纸和笔提取方根吗?我们使用计算器或简单调用我们最喜欢的编程语言中的函数。我们当中有多少人知道计算器的功能甚至功能?

你应该知道事情是如何运作的,更好的程序员,或者你想做的任何事情,你应该知道的越多。但是白天只有这么多小时。

更好的工具让我们变得更好。权衡是我们对这个过程失去了很少的控制权。

在某种程度上

例如,我不知道或不关心如何编写运算符重载,因为我有适合我的工具。我甚至不记得P / invoke是如何工作的,因为我拥有的工具会在我的C#项目中自动创建一个C ++ dll项目和一个 [DllImport] 。我不必为我的项目编写自动更新程序,因为ClickOnce就是它。 (我不知道它是如何工作的'引擎盖'。)

所以是的,我不那么聪明,因为我不知道C ++程序员知道很多低级的东西。但我仍然认为我处于胜利的一方,因为我可以做得更多。我可以花更多的时间在演示,质量控制和客户真正想要的功能上。此外,深入挖掘.NET框架确实需要一些学习,所以这是一个权衡。

我不会说他们会让程序员变得笨拙,但我会说的是这个。对于那些在今天这个时代开始开发的人来说,不要完全了解为我们做的幕后花絮。如今,平台内置了如此多的图书馆,今天开始的人们并不知道如何在一个或另一个地方手动完成这一切。

然而,我会说,如果没有Intellisense,我永远不会再写一行代码:)

我认为有必要使用更智能的工具,因此我们可以从复杂性中获得抽象层。但我认为我们必须能够改变对这些抽象层的访问权限。 我认为程序员会更高效,但很容易忽略许多基本概念的概念。这是一个权衡... 优秀的程序员将继续了解编程的基础知识。其他人将是“复制并粘贴”和乐高球员。

相反,更聪明的编译器意味着你更少与计算机作斗争,并且更多地考虑你是如何做某事的。

如果你正在与汇编程序挣扎,你几乎不会打扰匿名方法。

我会说不。

更智能的编程系统(我认为更高级别的抽象不是像自动修复代码的工具那样)IMNSHO实际上更难用。我提出的类比是他们充当了长杠杆;你在短端推动非常,将其移动一小部分并发生巨大的变化。

要弄清楚需要做些什么是很难的,但是当你最终做到这一点时,要搞砸它也要困难得多。

更智能的语言,编译器和框架使编程成为可能。我的意思是,如果我们仍然限制使用汇编语言,你能想象编程的状态吗?哎呀,划伤那个。如果我们被限制在C或C ++中,你能想象编程的状态吗?

编译器,语言和框架的改进使程序员更有效,假设他们具有良好的学术背景或良好的语义理解。

我知道这是一个老话题,但我仍然想在这里发表意见......

他们让我们变得笨拙,你们这里的大多数人都已经知道如何以一种体面的方式进行编程。为什么?因为你来自一个几乎没有使用框架的时代。

在教育系统中,越来越多的框架被用在类中......并且在没有使用框架的类中,开始编程并不令人鼓舞。了解所有这些代码,而在您的脑海中,您知道有一个工具可以为您完成所有工作。你知道在field / workfloor中你必须使用框架来加快速度。那么为什么花这么多时间学习代码呢?

所以:从短期来看,对于所有已经了解语言的人来说,没有...它不会让你笨拙

从长远来看....你会发现低级别的程序员变得更好,而优秀的程序员在lvl中变得更糟。

标记我的话!

scroll top