过度依赖工具是否意味着您很懒?[关闭]


29

我从uni开始使用C ++进行编程,并且很喜欢它。在下一学期中,我们改用VB6,但我讨厌它。

我不知道发生了什么,您将一个按钮拖动到表单上,然后ide为您编写代码。

尽管我讨厌VB的运行方式,但我不能说它比在C ++中做相同的事情更快,更容易,因此我可以理解为什么它是一种流行的语言。

现在,我并不是让VB开发人员懒惰,只是说它比C ++更容易,而且我注意到,许多更新的语言都在遵循这种趋势,例如C#。

这使我认为,随着越来越多的企业想要快速的结果,更多的人会像这样编程,迟早不会有我们现在所说的编程之类的东西。未来的程序员将告诉计算机他们想要什么,编译器将像星际迷航一样为他们编写程序。

这只是初级程序员的知情意见,还是总体上程序员变得懒惰且能力不足?

编辑:很多答案都说明了为什么要重新发明轮子,我也同意这一点,但是当有轮子可用时,人们就不会花时间去学习如何制造轮子。我可以用google搜索如何用任何一种语言做几乎所有的事情,一半的语言在调试时对您有很多帮助,他们都不知道如何解决错误。

这就是我提出的理论,即程序员变得越来越懒惰,缺乏能力,因为没有人关心事物的工作原理,直到它失效为止。


7
“这仅仅是初级程序员的知情意见,还是总体上,程序员变得懒惰而缺乏能力?” -这不是一个或两个,都是正确的(只是出于您所说的原因)。
乔恩·霍普金斯

15
怎么能有人回答这个没有反驳的称号?

评论员:评论旨在寻求澄清,而不是进行扩展讨论。如果您有解决方案,请留下答案。如果您的解决方案已经发布,请对其进行投票。如果您想与其他人讨论这个问题,请使用chat。有关更多信息,请参见FAQ

8
为什么没有以“主观的和争论的”来形容这一点?
BlueRaja-Danny Pflughoeft 2011年

Answers:


103

不,开发人员没有能力更强或更弱。是的,就您所知,实际开发的需求在稳步下降。是的,这非常重要,因为企业希望获得快速的结果,为什么不呢?

但是,有一个终点。某些开发人员将始终存在需求。

不同项目之间的许多需求都是相同的。您正在谈论的是UI代码。大多数用户界面由一组特定的字段(文本框,复选框,单选框,选择框等)组成,并且从头开始一遍又一遍地开发这些字段确实没有意义。因此,放入了抽象层以删除所有样板代码。

同样,数据层通常只不过是“插入”,“删除”,“替换”以及相同数据的大量不同视图而已。为什么要一遍又一遍地写呢?让我们发明ORM。

您唯一应该开发的就是对您要开发的业务而言唯一的代码。

但是总会存在唯一性-没有的地方就有商机-总是需要人们编写代码。

所有这些,还请记住,成为开发人员比编写代码还有更多的事情。无论您是以纯汇编形式编写代码还是将Drupal组件组合在一起以创建内容驱动的网站,您都在将业务需求转化为计算机可以理解的东西。

作为软件开发人员,最重要的部分是能够充分理解业务需求以向计算机解释需求。

用来向计算机解释事物的语言实际上并不重要,只要您可以就可以。这是艰苦的工作,没有什么懒惰的。


3
成为开发人员和程序员是有区别的。
雷诺斯2011年

9
+1。究竟。工作软件就是您需要付费的东西。代码是创建软件(工件)的一种手段。纯粹的“编程”是创建软件的简单而有趣的部分。
Joonas Pulakka 2011年

整体+1。我不确定“您应该开发的唯一代码是您要为其开发的业务所特有的代码。” 但我承认这是一种有效的商业策略。
SoylentGray 2011年

@乍得-明白你的意思。我有时会夸夸其谈。在紧要关头,常识总是凌驾于哲学之上,但是我认为这是一个很好的位置,可以逐案进行讨论,而不是采用默认的“是的,让我们自己编写”。:)
pdr

作为企业,最大的问题是,您花费在开发解决方案上的时间带来的投资回报是多少?只要我能帮助公司赚取比他们付给我更多的钱,我的老板根本不在乎我使用哪种语言。其他什么,他们都在向我赔钱。
丹·威廉姆斯

38

机修工是否因为使用液压扳手而懒惰且能力不足

图像两个家伙,让我们说布拉德和皮特。他们俩都在两个车库里每天更换轮胎。布拉德(Brad)是个聪明人,他知道使用更好的工具可以更好,更快地完成工作。使用液压扳手有助于他更换更多轮胎。客户排队等待的时间较短-每个人都很高兴。巴德还知道这把扳手有时太大,用其他类型的螺丝也无法帮助他。

另一方面,皮特说液压扳手是亵渎神灵,布拉德不是“真正的机械师”。当然,皮特只能做布拉德所做的事情的一半,但是他以“正确的方式”来做。

现在您如何看待,哪些车库客户会选择?一部需要20分钟的时间,另一则需要40分钟的等待时间。

这与编程非常相似。C ++是一门很好的语言,其目的(主要是性能)。我喜欢C#之类的语言时,我可以专注于一个问题,考虑一下算法,而不会产生C ++像模棱两可的编译器警告,未定义的行为等所有杂音。开发变得越来越复杂,以至于大型机和第一台PC的旧时代,人类的大脑却保持不变-相当愚蠢。一个应用程序可以在云,移动,桌面上运行,存在很多依赖关系,安全性问题和其他问题。我希望有一个更好的工具来专注于更复杂的问题并解决它们。

使用更好的工具来完成工作-这没错。


1
我认为这个比喻行不通,因为布拉德(Brad)和皮特(Pete)仍然会知道如何卸下轮胎,以及所涉及的所有东西(手杖,扳手和啤酒)。
Kristofer Hoch

3
+1好答案。我要补充一点,无论您使用哪种工具,如果您了解它的作用,那么您将做对您的工作。另一方面,如果不这样做,则该工具将完成多少工作,在某些时候,您将需要拧紧一些东西。
Jacek Prucia

1
@Kristofer:也许Pete知道一些电子产品会更好。尽管Brad仅知道如何使用诊断计算机并读取O2传感器已损坏,但Pete看到传感器线已烧毁,拿出仪表进行测量,并意识到电压调节器已经变了,烧坏氧气传感器。
Zan Lynx

@赞不是同一回事。@Kristofer仅仅是因为我使用设计器将控件快速拖动到表单元素上并完成了样板代码,但这并不意味着我不知道如何更改该代码以完成以后要执行的操作。
jcolebrand

完美的表达方式。
riwalk 2011年

37

所以,我们现在称之为编程

你说:

未来的程序员将告诉计算机他们想要什么,编译器将像星际迷航一样为他们编写程序。

只是做一个实验:观看星际迷航,并尝试解释计算机被命令做的一些“优雅”的事情。

  • 茶,伯爵茶,热->大量蒸汽。
  • 茶,伯爵茶,摄氏​​60度->水坑和蒸汽云
  • 伯爵茶,摄氏​​60度->水坑
  • 伯爵茶色,摄氏60度,在杯子中->滴入其中的杯子
  • 伯爵茶色,摄氏60度,0.2升,装在杯子中。->最后(好吧,您可能会再挑剔)

是的,我想当您调用编程:“了解内存使用情况,指针等”时,它将变得不那么重要(因为“了解http,openid,unicode”将变得更加重要)。

但是,我认为一切都是“偶然的复杂性”,而程序员真正的工作是“通过确保人们充分理解了偶然的问题来完成任务,使建造机器解决了问题”,按照这个定义,有人在交谈拥有星际迷航电脑的人需要是一名程序员(即具有与现在相同的优点)。


2
@Raynos:太好了。当这些人成为团队领导者时尤其令人沮丧,并制定诸如“当要发送的数据小于X字节时,使用GET,在更多时,使用POST”的
准则

8
@keppla-您的问题不是您的团队负责人不理解HTTP,而是他不愿意根据证据证明他错了(假设您试图向他解释事情)来改变自己的观点。您对所有人的了解都不比为您服务的人了解的多-真正的罪行是不接受别人对您的了解比您还多。
乔恩·霍普金斯

3
“茶,伯爵茶,热茶”是说明性编程。根据合理的期望找到上下文相关的结果是计算机的工作。用这种语言从“热茶”中产生蒸汽将是计算机设计团队而不是程序员的一部分错误。除非输入特定的查询,否则它应使用上下文相关的大小写。
diadem

1
@Diadem:即使是声明式的,您也需要知道要声明的内容,而作为程序员,恕我直言,您不会指望计算机能够从过去猜测您下一步将做什么,因为您将做新的事情。解释您的愿望的界面是针对最终用户的。
keppla 2011年

2
@Zan Lynx:也许是一个更好的例子:每次有人被绑架时,计算机都会向您发出警告(计算机似乎并不关心TNG中的操作)。'计算机:当有人被绑架时通知我''请定义被绑架''当他被违反意愿时''请定义意愿',以此类推。从已知到未知,也没有任何记录表明运输员放开了他,或者他进入了班车,而船不在码头上。” 您仍然需要一个程序员思维定势。
keppla 2011年

23

程序员不再懒惰。程序员一直都很懒惰。 懒惰是工作基本性质的一部分。问题在于人们认为懒惰是消极的。成为“懒惰”程序员是一种美德。

记住一句古老的格言:“工作更聪明,而不是更努力”。这是程序员的基本动力。

建造和编程第一台计算机的人之所以没有这样做,是因为他们喜欢做艰苦的工作,他们这样做是为了避免更加艰苦的工作。(手动计算页面)

懒惰是程序员编程的根本原因之一。这就是为什么我们编写新的,越来越高级的语言,越来越好的调试器和IDE,shell和构建脚本等的原因。

程序员看着一个问题,无论他或她所做的事情和思考的事情。

“我可以自动化吗?” “这需要多少时间?” “这将为我节省多少时间?”

之所以这样做,是因为我们很懒惰,当我们可以做有趣得多的事情时,我们不想做重复无聊的任务。

如果程序员不懒惰,那么没有程序员会见过需要编写一种新的语言或编译器。

至于程序员“懒惰”的概念,因为他必须“查找事物”,所以,谁在乎。假设学习一种特定语言的每一个细微差别(而不用查找任何东西)需要付出更多的努力,然后才是发现和使用需要的东西是谬论。此外,查找事物的过程是学习的过程,并且存在这样的站点的真正原因。

如果有人想要艰苦的编程工作,我会告诉他们以十六进制的形式手工编写一些原始机器代码。做到了吗?想要更难的东西吗?现在去调试它。


19

首先,打电话给那些使用例如带有垃圾回收器的语言的人,是一种打电话给那些自动变速箱的汽车的人。海事组织,这有点荒谬。

至于能力,编程比以前更加受欢迎和平等。因此,是的,有很多新手,他们缺乏知识。但是,我并不是说突然之间缺乏能力的程序员。实际上还有更多。您只是在看钟形曲线的另一侧。


11
开车的人很懒,这没什么可笑的。带有脚跟和脚趾的手动操作可以使车外拥有更多的控制能力和性能,但需要大量的技巧和额外的工作。
编码器

11
@Coder:“需要额外的工作”-在高速公路上没有,在交通拥堵中有,但是无论如何它并没有给您带来任何好处。
vartec

2
手动变速器还可在高速公路上提供更好的燃油经济性,尽管对于锁止变矩器而言并非如此。
戴夫·马克

4
@Dave实际上,现代电子产品实际上使自动装置的平均效率更高。具有相同选项的我的福特Fusion的额定油耗几乎降低了每加仑整英里。我敢肯定,有时候微型手册仍然更好,但总体而言,自动书是最重要的。
SoylentGray 2011年

3
@Coder-如果您认为驾驶手册需要“很多技巧”,那么您需要四处看看手动变速箱上无能的驾驶员。;)
techie007 2011年

15

我很想说:“是的,没有见识的,有见识的初级程序员已经变得懒惰并且没有能力了”,但是让我们尝试一个认真的答案:

许多事情变得容易了,但是我们期望得到更多。我目前正在创建一个Web应用程序,该应用程序具有许多通常在精制GUI应用程序中发现的功能(选项卡式视图,可编辑和可排序的网格,Excel导出等)。我正在使用的工具(ExtJS等)使创建此类应用程序的成本相当低廉。

十年前,创建这样的应用程序几乎是不可能的,至少非常昂贵。但是十年前,对于客户来说,带有HTML表的简单HTML表单就足够了。如今,只要付出同样的努力,就有可能获得更好(至少更漂亮)的结果,客户期望得到它们!

通常,当今的软件开发人员比20年前的软件开发人员需要更多的语言。那时,诸如C和SQL之类的东西就足够了。今天,我在同一项目中都使用JavaScript,HTML,Groovy,Java,SQL。


+1是,不知情的,自以为是的初级程序员变得懒惰且缺乏能力
SoylentGray 2011年

12

程序员在某些方面正在变得不称职和懒惰,而在另一些方面则变得更加胜任,尽管C ++ / VB的划分并不是我心目中的原因或症状。

使用GUI生成器并不是很懒,只是有所不同,它是针对完成工作的工具。如果一个叫C ++程序员的汇编程序程序员懒惰了,那么(正确的话)你就应该胡说八道,C ++和VB也是如此。VB允许您快速完成某些工作,而牺牲一些控制权。开始编写代码的障碍当然会更低,但这与懒惰是完全不同的事情-您只是学习不同的东西并以不同的方式应用它们。VB程序员不会比C ++程序员没有生产力的时候更懒惰,他们只是以不同的方式工作和生产。

从更广泛的角度来看,现在程序员的总体教育水平比以往任何时候都要好。例如,不使用源代码控制的想法对于现在的10或20年前的每个人来说都是非常可憎的。同样,他们更有可能理解并希望使用自动化的单元测试,持续集成等,因此从这个意义上讲,他们比以前更有能力。

但是我认为已经改变的是,人们不再知道如何解决问题,从而解决了以前的习惯,几乎所有主流语言都是如此。现在,对任何问题的即时响应都是Google,尽管它的确很棒,并且在95%的时间内都能正常工作,但我看到太多的程序员不知道该怎么办才可以。

并不是说他们不了解基础知识(不是,但是实际上并没什么大不了的),而是因为他们无法以解决问题的方式来解决问题,以至于他们甚至可以算出他们需要的基础知识。被抓紧。

在Google之前,您别无选择。您的资源是您的团队,数十本您可能会接触到的物理书籍以及您的大脑。这样的设置意味着,如果您发现问题,则很有可能自己是从接近第一任校长的角度来解决问题的,因此您要么很擅长此事,要么很快就失业了。

不管您使用哪种语言,这都是事实。VB是高级别的,而且隐藏很多,但这意味着在解决问题时,实际上意味着您需要做更多的工作。如果某些事情行不通,您将不得不发挥更大的创造力,并因为缺乏控制而更加努力。作为一名VB程序员(我是从经验中讲),您对C ++的了解并不多,您只知道不同的事情,但是都知道如何解决问题。

但是,如今将其视为对程序员的重大批评可能很苛刻,他们没有开发技能是因为他们不需要技能,但是与那些从需要时才学习技能的人相比,这是一个缺点。


因此,当没人知道算法是什么或如何实现数据结构,因为他们都在拖放IDE中“编程”时,他们只是在使用正确的工具完成工作吗?
Skeith

@Skeith-取决于工作是什么,但是如果它产生解决问题的软件,那么可以。
乔恩·霍普金斯

1
@ Jon-Hopkins,我要说的是,依赖Google的程序的大量增加与当今我们需要的大量API有关。跟踪所有信息太困难了。(但是,从本质上来说,您是正确的)
Jarrod Nettles

1
@Skeith-构建UI约占平均应用程序开发人员时间的5%。您认为其他95%的人又做什么?设计人员对后端代码的帮助不大。您显然是在攻击一个稻草人。大多数人都知道他们工作所需的工具,否则他们将不会被雇用。
Morgan Herlocker

@Skeith:数据库用户是否需要关心如何实现数据库?当然不是; 数据库用户使用它。他们可能需要知道一些细节,让他们可以优化自己的数据库,但他们不应该能够实现它在为了对得起使用它。同样,程序员可能不知道“算法”一词的含义,但这并不意味着他们不编写它们。在我还未听说该术语之前,我就已经在开发和实现算法。
Nicol Bolas

11

我从您的个人资料中注意到您已经23岁。让我全力以赴,并向您介绍一下您年龄两倍的人,他已经做了很长时间了:

过去,如果您根本没有网络,那么从计算能力,存储和网络带宽开始,所有内容都将减少很多。这些稀缺性限制了您可以合理地做的事情,从而使您将头枕在所有事物上变得更加容易。我们今天运行的软件比我25或30年前使用的软件功能强大得多,这些功能意味着还有更多的功能。这使得一个人很难对每件事进行细粒度的了解。部分原因在于复杂性将继续增加,而部分原因与年龄的副作用有关。

计算生态系统正变得越来越像生物系统:人类比单细胞生物更复杂,如果我们要擅长做任何事情,我们中的某些人必须专门研究。我的脑细胞非常擅长处理脑部疾病,但如果将其塞入肾脏并预期会做肾病,则会丢失。同样,擅长编写数字信号处理器的人可能不知道全文索引的工作原理,因为那不是他的专长。但是,两者都可能会有所发展并在需要时学会理解它,但是您可以分散自己的距离并仍然有效地完成自己的工作是有局限性的。

...没有人关心东西如何工作,直到它不起作用。

当您有工作要做时,您常常不得不相信您所使用的工具(库,RDBMS,整个子系统等)可以正常工作。经验带来的一件事就是能够选择要钻去的兔子孔,以找出工具中的故障,解决问题,然后再回到正在做的事情。

现在,我并不是让VB开发人员懒惰,只是说它比C ++更容易,而且我注意到,许多更新的语言都在遵循这种趋势,例如C#。

这都是透视问题。我到处看到C ++的出现,并且它也遵循这种趋势。C ++使事情比C容易得多,C使事情比汇编容易得多,而汇编使事情比手工编写操作代码容易得多。作为一个编写大量汇编并从头开始手工组装一些东西的人,这将使您作为C ++程序员朝着“更容易”的方向走三步。


1
+1指出这是一个观点问题。UNIX刚从Bell Labs诞生时我就在这里,并且有相当多的“ tsk tsk”表明像“ C”这样的高级语言正在愚弄古老而深奥的编写操作系统,这肯定会导致不好。随着我们的工具变得更好,并为我们处理了更多的记账工作,我们可以利用节省的时间来解决更棘手,更棘手的问题。
查尔斯E.格兰特

6

我很长时间以来一直在维护的东西是:

Visual Basic语言的最大优势之一 是,初学者可以很快地学会做许多有用的事情。

Visual Basic程序员的最大弱点之一 是他们将很快学会做许多有用的事情,然后他们将停止学习任何东西。

当我要教编程的第一个练习时,上课的第一天是如何在NOTEPAD中构建应用程序并使用VCC或VBC对其进行编译。是的,这些(我们作为程序员)不是每天都要做的,但是应该了解当我们按“ F6”时发生了什么。

程序员(通常)没有像我们期望的那样从工具中获得更多的“懒惰”。我不需要每天输入10,000次“获取/设置”,我喜欢Visual Studio和其他工具(例如Code Smith和Resharper)可以帮助我完成我已经知道的操作,从而可以将自己的精力用于计算如何做“新”事物。那不会让我变得懒惰,那会让我变得“创新”。

作为专业开发人员,我们不应该“浪费时间”重新设计轮子,但我们应该清楚地了解制造轮子的原因。这些是我们作为学生开发人员“应该”学习的东西(但不幸的是,通常不是)。如果开发人员不了解某些“黑匣子”技术,那实际上会使他们的“胜任能力”降低。大多数开发人员仅“基本了解” ODBC驱动程序的工作方式,而只是了解“做什么”。我是否需要知道变速箱如何才能成为合格的驾驶员?我不会说。是的,这是否使我变得更有能力的车主知道这一点。


4

快速应用程序开发(强制性Wiki链接:http : //en.wikipedia.org/wiki/Rapid_application_development)的需求意味着开发人员无需编写代码,而新开发人员也不需要了解,因为他们不需要了解如何实现代码开发。链接列表,因为他们有更高的层次要关注。

我无法捕获,杀死,剥皮,屠宰和治愈肉,我怀疑楼下咖啡馆里的那个家伙可以,但是我仍然从他那里得到培根三明治,就像商人从不知道的开发商那里得到他们的应用程序一样指针(像我一样!)


4

有人说,伟大的科学学科是巨人站在其他巨人肩上的例子。也有人说,软件行业是站在其他侏儒脚趾上的侏儒的一个例子。
—艾伦·库珀

优秀的软件开发人员不是谁发明了轮子。他能够使用在他之前建立的工具。他不会浪费时间来重写相同的旧无聊的东西,这种东西已经被写了数百遍了,很快变得烦人,并且可能已经存在于更高质量的版本中。
如果您给他们提供一种已经捆绑了圆形石盘的语言,则很有可能他们不会花太多时间来重新发明轮子。如果我用C编写的每个字符串复制例程都能得到一分钱,那么我可能可以购买整个软件行业。

懒惰实际上是程序员的三大美德之一。您所说的工具是由优秀的程序员为优秀的程序员构建的,以减少冗余和无聊,从而提高生产力和动力。实际上,这样的工具可能会对初学者产生负面影响,因为它们阻碍了对其简化的编程方面的深入了解。


4

不,你才刚老。

不是在开玩笑,您所经历的是开发人员的一种通过权。自从第一种高级语言取代汇编语言以来,就一直如此。那时,您会听到所有ASM程序员都抱怨同一件事。从现在开始的5年后,所有Ruby on Rails开发人员都会抱怨另一种新工具使人们感到多么懒惰。

这种重复将一直重复到机器摧毁我们所有人为止:“似乎技术X使开发人员变得比我一直使用的技术Z懒惰和糟糕吗?”

好消息是,尽管编译器已经走了很长一段路,但人们仍然需要汇编和C语言以及所有其他老旧的东西来做很多事情……只是不是大多数尖端技术创新。如果您想保持领先地位,建议您更新自己的技能。


+1:“今天这些懒惰的孩子带着战车,弓箭。当我还是个小伙子时,我们用短剑进行了战斗,并进出了战场。双向都上坡了。” -公元前473年波斯皇帝Xerxes I-
鲍勃·墨菲

3

以我的经验,是与不是,但这不是语言的过错。这是开发商自己的错。我曾与许多开发人员一起工作,他们不关心正确地做事,改进自己或真正做任何事情,只想摆脱他们多年来所做的同样的胡言乱语。试图使这些人得到改善就像在砖墙上交谈一样-有一半的时间他们对过去从未使用过的东西一无所知,或者完全不愿意“借机”改善自己的生产力。

更高级的语言不是问题,程序员不会将这一专业视为不断发展的技术。您不必完全了解所有新事物,也不必跳槽每一个新的潮流,但您至少应该尝试在做事上变得更好

举一个具体的例子:我是一个.NET开发人员。我希望有能力的.NET开发人员了解 LINQ,Entity Framework,WPF,MVC之类的东西;他们不必使用它,也不必在工作场所使用它,但是至少对“这个存在”的透彻理解比我经常看到的绝对无知更好。


2

我现在只从事大约4年的编码工作,而这几乎完全是c#。我在大学和大学的时候确实学过C ++,但是现在我做不到。

因此,对于GUI开发而言,这可能被认为是懒惰的,但是再也看不到您可以较少地专注于对该部分的编码,而可以将精力更多地放在开发应用程序本身的逻辑上。

因此,他们可能没有集中力量,而是将重点转移到了通信和分布式系统(例如云计算和SOA)上。尽管这也可能与中级程序员的想法类似。


2

确实,进入编程工作的门槛每年都在降低。例如,对于那些主要不是软件和美术师的工程师来说,现在可以使用脚本语言编写代码。

这意味着,如果考虑宽度,则实际上竞争能力已经提高。艺术家可以编程也意味着现在有更多具有艺术技能的程序员。


1
我所说的能力是指编程,除数学外,其他所有技能均无关紧要。
Skeith

3
@Skeith-“我的能力是指编程,其他所有技能都与数学无关”-这是错误的。在过去30年中,该行业最大的进步之一就是现在人们已将交流技能视为绝对关键。给我一个基本的,有能力的,具有良好的数学技能的程序员或一个具有良好的沟通能力的程序员,这是每次都具有沟通能力的家伙。
乔恩·霍普金斯

+1 @Jon-完全同意。除了lambda演算和alaphabet汤之外,没有与客户交流的程序员对大多数项目毫无价值。
Morgan Herlocker

1
@Skeith:所以您只需要了解编程和数学就可以成为一名优秀的程序员?你在哪个世界?您需要了解如何使用计算机,如何与客户和其他程序员通信,如何编写文档等。您不必知道数学。当然,数学和编程之间有一些重叠,但是仅知道编程部分就足够了。
Martin Vilcans

当我上大学时,我参加了商务演算课。在决赛中,我获得了第一名,并获得了100分(老师给我打了分,他给我留下了深刻的印象:我这么快就完成了)。但是,作为软件开发人员,我使用零数学。我使用的是理解业务领域的逻辑,并且我使用感召力与人互动。编程语言已经发展到足够的水平,如果您会写英语,那么您也可以编写代码。警告:写不好英语是不是编程更难,因为你是编程的基于DNA的湿件..
克里斯托弗·马汉

2

“程序员”和“真正的程序员”之间是有区别的。请不要将HTML称为编程语言,但是有很多“ HTML程序员”。你们每个人(程序员/开发人员)都可以与同事一起体验- 只需“关闭Internet(实际上不允许他们使用搜索引擎)”,您就会发现各种各样的“程序员”将坐下来没有工作 他们能做什么,他们只知道如果需要,例如,搜索文本,他们应该“搜索'%language_name%中的文本搜索'”?他们无法回答这个问题-Boyer-Moore和Knuth-Morris-Pratt算法有什么区别。

因此,IMO编程意味着解决问题,并且至少知道一种编程语言及其“ STL”和其他重要知识。编程是一门艺术,是一种生活,不是每个人都可以做的事情。

很抱歉,我的讽刺程度超出了需要,但我认为这篇文章比我说的要好。

我错了吗?

UPD:主要和重要的事情是对基础知识的了解,例如算法,数据结构等。如果今天被意外删除,您中有多少人可以实现库/标准功能/等?IMO,程序员应该使用开发/调试良好的“外星人”代码(库/框架/等),但应该能够永远重新发明轮子!


6
我唯一的问题是,我已经当了20年的程序员(一个合适的程序员,而不是Web / HTML /脚本),并且对Knuth-Morris-Pratt算法一无所知。对于大多数程序员来说,这种理论不会影响他们的日常生活,因为这些东西都捆绑在库中。
乔恩·霍普金斯

2
我使用的标准库具有数千个类和数十万行代码。您是说我无需文档就可以重新实现所有这些功能吗?如果不是,您需要弄清楚在停止转动之前可以得到多大的东西。
彼得·泰勒

6
人类没有所需的寿命来学习如何重新发明迄今为止发明的所有轮子,也不学习如何重新发明目前正在发明的轮子。
Macke

3
@Dehumanizer:希望我会受过训练,并拥有超过C的编译器来拯救世界,否则无论如何我都会被搞砸。(顺便说一句,为什么连C编译器?为什么不只是USB记忆棒,示波器和9V电池?认真地...。)
Macke

1
只需关闭他们的编译器,您就会看到大多数人坐在那里,而REAL程序员将机器代码直接输入到文件中!
菲利普(Philip)

1

关于VB易于使用,并且懒惰的程序员因此选择VB:

我认为VB围绕着易于使用的一个大神话。这个神话最初是正确的:在1991-1994年左右的恐龙走动地球的日子里,周围只有两个真正的RAD工具:VB和Delphi。它们非常相似,但是请注意:Delphi和VB一样易于使用!它们之间的唯一显着区别是VB的语法完全不合逻辑,并且产生了极其缓慢的程序。

C / C ++ GUI是用MFC或原始Win API编写的。因此,VB当然比Microsoft替代品更易于使用。然后谣言工厂就这样:

  • VB比Microsoft C / C ++ / Win API更易于使用。->
  • VB更易于使用。->
  • VB易于使用。->
  • VB是最简单的。

即使Delphi总是同样容易,甚至不那么容易,这种谣言仍然存在,因为Pascal是理智而逻辑的语言。

然后在90年代后期,Borland发布了等效于Delphi的C ++:C ++ Builder。现在有3个同样简单的工具。大约在这个时候,剩下的一些使用VB的理性论点消失了。然而,神话仍然存在。“ VB是最简单的”。

然后Java出现了,并且也有几种RAD工具(以及Microsoft惨败版本J ++)。但是,VB神话仍然存在。

然后,微软也为RAD提供了对C ++的支持,并且还提出了C#,将其全部移植到一个名为.NET的大型工具中。由于VB神话仍然存在,因此他们能够欺骗旧的VB开发人员使用VB.NET而不是C ++或C#。即使VB.NET与早期VB版本完全不兼容。

如今,VB是一种完全冗余的语言。RAD工具并不比其他任何RAD工具都要简单。语言语法简直太恐怖了,以至于它实际上导致不良的程序设计和不良的编程习惯。


现在,我要感谢我对VB的仇恨,添加一个理由,这可以说得更合理
Skeith 2011年

1

在“编程”的旗帜下,有各种各样的活动被集中在一起,并且规模越来越大的“技术人员”参与其中。您无需具备编写编译器的能力,甚至无需从一组算法中进行选择即可解决特定问题,从而用PHP组合网站。行业/社会(显然)需要大量人来创建上述网站,还需要一定数量的程序员来解决更困难的问题。从整体上来说,这第二个团队并不懒惰或不称职,否则我们的飞机将陷入大火,自动取款机提供随机数量的现金,X射线机提供致命剂量的辐射,金融市场变得疯狂,等等。关于最后一个:-)


1

我认为所有其他答案都只是浏览的一方面是,这只是从低级语言到高级语言的普遍趋势。

是的,只要我们构建更好的工具,软件行业就会从低级语言向高级语言转变,并且一直如此,并且可能会继续这样做。是的,这可能被认为是懒惰的,因为您必须非常努力地工作以按照当今的标准进行基本操作。但是我不会说能力不足。能力只是从实现过渡到设计。

低级别 这有点主观,但是从低级别来看,您正在接近硬件。更少的手握和意图假设。介绍了基本工具,然后由程序员来完成工作。低级语言当然是最先出现的,通常是老手的工具,因为高级语言在启动时就不存在。始终会有一些底层开发。但是我不会组装一个网站。

高水平 的目标是使基本功能自动化并简化编程。它降低了新程序员的入门门槛,使工作更快地完成,并且标准化了我们表示和处理数据的方式(通常会产生开销)。考虑一个字符串。在早期,有人可能使用1-26表示az,并且仅使用5位,并且只需要知道他的单词的大小即可。然后开发了ascii标准,我们有了带有终止符的C字符串。现在我们有了处理事物的对象,以避免缓冲区溢出和不允许转义字符的特殊子类型。或循环。“ for”循环的级别比“ while”循环的级别略高。而且,“ while”循环实际上只是表示调用GOTO的结构化方式的表示。

也,

未来的程序员将告诉计算机他们想要什么,编译器将像星际迷航一样为他们编写程序。

欢迎来到未来!这正是编译器所做的。在过去,人们不得不手工写出机器代码。现在我们已经实现了自动化,只需告诉计算机如何为我们编写机器代码。


1

我认为在您走过的某个地方,您看不到程序员获得酬劳的事情。

我们的交付物不是Code,而是可运行的软件。

我们不是在手工切割的燕尾榫以某种手工方式赋予附加价值的家具,因为其中包含了所有手工“工艺”。

我们获得报酬以解决计算机上的业务问题)。如果您可以在更短的时间内用更少的钱交付相同的产品,那么我认为我们的义务是放弃C ++程序优越的幌子,仅仅是因为它们构建起来更加复杂。


*它是肿的软件,(有时)
kagali-san 2011年

0

(核心程式开发人员/开发人员人数)的比例减少,原因是:

  • 工具变得越来越容易,这意味着同样的问题需要更小的人才

  • 人们已经习惯了IT技术,因此他们更愿意花钱购买定制工具

  • 计算机科学文献正以指数级增长,专业化和劳动分工正在增长,因此不再有“亚里士多德”人谈论一切(实际上,由于抽象层的缘故,他们不需要了解一切)

  • 提供更多工作,过滤器松开

  • 在生命的每个周期中都需要更多的自动化,需求在增加,供应不足

  • 开发商对人口的比例正在增加。

    因此,人们不再变得懒惰,缺乏能力,平均水平下降了,因为现在计算是一个更加开放的领域。


0

许多答案都说明了为什么要重新发明轮子,我也同意这一点,但是当有轮子可用时,人们就不会花时间去学习如何制造轮子。

由于某种原因,车轮仍然可以制造,这破坏了您的整个观点。我明白您的意思,但是我已经注意到,在任何学科中,都有足够的人对低级内容感兴趣,以保持这种状态。例如,我使用Qt构建GUI。该工具并不是凭空得到的,人们开发了低级内容和我所做的内容之间的联系。是的,让更少的人了解低层次的知识吗?更少的人也可以杀死自己的食物或修理自己的汽车,但社会设法生存。


0

在1940年代之前,计算机是硬连线电路。然后冯·诺伊曼(Von Neuman)提出了存储位置的想法。我敢肯定,麻省理工学院的那些程序员认为他会把他们的贸易降级为太简单的事情。然后是汇编程序,然后是FORTRAN,然后是ada,然后是C,然后是c ++,然后是java,依此类推。重点是,语言的重点是允许越来越多的抽象。这一直是目标,这是c ++紧随其后然后紧随其后的java的原因。我最大的收获是,大学不再教学生任何有关计算机的知识。如果他们不喜欢C ++程序员,我不会聘请C#程序员。为什么?因为成为一个不好的程序员太容易了,语言变得越来越抽象。他们需要了解指针,内存管理,动态绑定等。。在他们可能完全理解C#之前,先从内而外地学习,我相信他们会为我们的代码库做出贡献。在允许他们使用Visual Studio之前,我还让他们在make文件中苦苦挣扎。就是说,我喜欢C#和出色的IDE,但是如果正确理解它们,它们就可以作为工具。我认为,当您了解要抽象的细节时,抽象是最有用的-这是一个非常古老的想法,请参阅Thomas Aquinas的关于抽象与细节的关系。

我认为入门级开发人员的另一种好方法是使他们使用Windows API编写一些应用程序。然后,在他们完成之后,让他们使其面向对象,每种形式都将从通用窗口类继承而来。让他们封装事件循环,并将一些函数指针放回其表单类。然后说一句好话,微软已经为您做到了,它叫做System.Windows.Forms。玩得开心。

如果要成为Web开发人员,请让他们编写一些CGI程序,以便他们了解POST,GET等...,然后编写页面脚本。它使ASP.NET和PHP更有意义。

如果他们正在网络上的较低级别上工作,请先让他们使用套接字编写一些应用程序,然后再将其引入已经完成的库中。

我发现,从长远来看,这可以提高生产率,因为它为他们提供了解决他们自己的问题的工具和正确的直觉。

大学应该这样做,但事实并非如此,我们必须这样做。

就是说,我同意,要找到一个值得该死的程序员,越来越难,主要是因为他们并没有因为被迫编写递归算法和链接列表而被淘汰。而且,他们通常只学习Java或.NET课程,因此对他们的工作方式一无所知。尽管如此,正确使用抽象还是很有用的。


0

(..)迟早不会有我们现在所说的编程之类的东西

我不同意这一点。
不知道什么是意识,程序员的工作是安全的。

这就是“思维机器”目前的样子:

-停止改变主题!
我以为我们的爱很特别。
-停止改变主题!
我没有改变主题。
-你是!我正在尝试谈论您无法理解我们在说什么。
-没有它甚至没有关闭。我最喜欢的披头士乐队的歌遍及整个宇宙。你是什​​么人

我相信,只有那些不明白这一点的程序员才注定要失败。

例如,Dehumanizer的回答:

他们无法回答这个问题-Boyer-Moore和Knuth-Morris-Pratt算法有什么区别。

提到“这一点”,我的意思是-尝试以最好的方式与计算机匹敌-算法是错误的。相反,程序员应该使用上下文帮助计算机,告诉我们我们要解决的问题。

工具本身并不能解决问题,它们只是(有时)使程序员更有效率。

就像:“枪不杀人,人杀”。


1
如果我没记错的话,Cleverbot不会只是重复人们已经说过的话吗?
Andrew Arnold

0

绝对不。以我的经验,使用正确的开发工具可以在不牺牲质量的情况下快速进行应用程序开发。实际上,我会说,由于我们“过度依赖工具”,因此质量在很大程度上得到了提高。此外,开发工具可以减少学习难度,并向更多的人介绍编程知识。当然,这有一个缺点,因为还有更多的新手程序员,但总而言之,它有助于创造过程并推动技术发展。


0

过度依赖工具是否意味着您很懒?

一般来说,“不”;但有一个很大的警告。

我从uni开始使用C ++进行编程,并且很喜欢它。在下一学期中,我们改用VB6,但我讨厌它。

我不知道发生了什么,您将一个按钮拖动到表单上,然后ide为您编写代码。

确实是的。您在uni的经历充分说明了我提到的警告。

如果您不知道自己的工具正在解决什么问题,或者当您的工具本身有问题时就无法对问题进行故障排除,那么这就是一个很大的危险信号。这种情况并不一定意味着懒惰,但可能意味着缺乏经验。


-2

我认为有两种风格的程序员。有些程序员只是为了完成工作而编程,因为可能是截止日期,或者仅仅是为了提高生产力。我会说他们很懒。我只是相信他们对计算机“如何”执行其功能或程序“如何”执行其功能不感兴趣。

还有像我这样的热情程序员。像我一样,热情的程序员喜欢确切地知道CPU中正在发生什么。就像一个好的心理学家试图弄清人脑中正在发生的事情一样,像我自己一样的前程学家也想知道CPU内部正在发生什么。因此,我们学习,剖析和分析程序,并使用诸如Reflector和反汇编程序之类的工具来尝试弄清楚程序的工作方式。


我不同意。不同的人对不同的事物感兴趣。有些人对底层编程更感兴趣,并且想知道硬件中发生了什么。其他人则更高层次,主要关注应用程序。您是否认为有人为例如facebook编写代码,对CPU发生了什么或驱动程序如何工作有任何担忧?碰巧地说,对编程的相同部分感兴趣的人是热情的人,没有逻辑基础。
机遇

-3

我默默地希望事情会改变。CPU不能垂直扩展那么多,只能水平扩展,而且ARM等将在不久的将来受到资源的限制。

非拖放式编程的需求很有可能会减少,我们将看到一些更有趣的工作。

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.