作为程序员,我应该了解低级和高级编程语言吗?[关闭]


18

已联系我进行一些工作以通过TCP / IP进行LED遥控显示器的工作,但是我的经验和准备工作主要是关于高级编程语言的。我对与我联系有关这项工作的人说,他告诉我:

“如果您自称程序员,那么您应该了解所有这些内容”

程序员真的应该知道底层编程的细节吗?还是考虑到底层编程不是我的专长,我是否可以将其视为黑盒概念,理论知识,但不一定要这样做或实施底层语言解决方案?


8
在较高级别进行编程时,您必须掩盖较低级别的抽象,否则您将无法完成任何工作。但是,能够在较低级别上工作非常有用,只是不要尝试一次完成所有抽象级别的所有操作。您不需要,但如果不需要,请不要申请低级职位。

1
@delnan:在较高级别上工作时,当然必须掩盖较低级别的细节。但是,我认为每个程序员都应该知道他们正在编程的机器在较低级别上如何工作。知识不需要太详细-仅知道从头开始构建基本计算机就足够了。
谢德勒2011年

4
“如果您自称程序员,那么您应该了解所有这些内容”。如果他们非常想要您,以至于因为您缺乏背景而受到诅咒,那就很不对劲。我无视他们的评论,完全没有道理。他们要么想要您有您的背景,要么他们不想要您,也不应因您没有背景而诅咒您。
S.Lott

3
另一个情况是:“哇,我很高兴错过了子弹!” 您不是真的想为这样的势利者工作吗?
Edward Strange

2
@Schedler-如果他们不烧自己的木板,那他们就是新手。
Edward Strange

Answers:


37

您的联系人不知道他们在说什么。有许多语言,方法论,技术等等,因此一个人不可能很好地了解所有必要的细节。作为程序员,您要做的是知道如何学习完成工作所需的知识,以及如何解决问题的方法,无论使用何种编程语言,都可以采用该方法来解决问题。

承认您不知道的事是可以的,但是您也可以证明,无论面对什么,您都能学到足够的知识来达到预期的效果。好的程序员仅仅是解决问题的好手,可以用各种编程语言来实现他们的解决方案。

我不会为有您的联系态度的人工作。


4
+1:首先,该评论没有任何意义。
S.Lott

尽管我敢打赌,还是有很多只有汇编的开发人员乐于按小时收费。
Erik Reppen 2013年

22

“如果您自称程序员,那么您应该了解所有这些内容”

我强烈不同意这一说法。这就像要求厨师做饭,驾驶员驾驶任何类型的机动车或让医生知道所有疾病一样,这是一个荒谬的假设。

作为一名程序员,必须知道如何以某种语言编写软件,以便以自动化的方式执行某些任务。语言和任务会因程序员的不同而异,就像厨师知道如何烹饪,驾驶员知道如何操作,医生知道如何进行诊断一样,这取决于每个专业的专业程度。


2
是的,直到抽象崩溃为止,他们都不知道为什么他们的代码会出现性能问题,为什么某些外部库会导致数据崩溃/损坏等。根据我的经验,仅懂高级语言的程序员根本就不那么好既能做到又能做到的人
Ed S.

4
您错过了重点。是的,高级程序员应该能够对低级方面有所了解,但是他应该知道如何为Linksys路由器编写固件升级吗?
maple_shaft

7
我确实认为他们应该知道如何找出方法。现代编程的很大一部分是知道要记住什么以及将哪些文件作为参考。
Michael K

8

像一个从来没有写过任何代码的人一样说话。这将是同一个人,他会认为您应该在引用时间的一半时间内就能做到。不要和白痴争论。

通过了解自己的局限性,您展示了更多的知识和性格。这个人谈论的东西他一无所知。

我想每个木匠都应该知道如何雕刻华丽的家具。如果飞行员可以驾驶一架飞机,那么她可以全部驾驶。


我同意,就像我说的那样,因为您是医生,所以您应该知道如何进行心脏直视手术。但是在现实生活中,您知道他必须是专家才能做到这一点,但是在编程时,很难分辨出您何时只是从外部将其视为“所有强大的程序员”。
工作

6

学校中的大多数CS程序都会为您提供一些有关低级编程的知识。例如,我有使用8088处理器的汇编器类(好的...这让我有些犹豫了)。但是,我认为,如今很多贸易学校都绕过了这一知识,如果事实并非如此,请附上评论。

最重要的是,总是知道芯片级会发生什么-除此之外,高级语言最终将在运行时最终在那里。

但是,让某人告诉您您不是程序员,因为您目前不知道低级编程是无知的。如果您需要在当前项目中拥有这些技能,那么您应该有足够的聪明才智或动力去学习所需的技能,然后加以应用。

如果客户已经以这种方式与您交谈,我将不得不认真考虑不参加该项目-您永远不知道该去哪里。


6

当人们说“您需要知道X才能称自己为程序员”时,我真的很鄙视它。真?好吧,有些人整天都在研究COBOL,并且喜欢它。他们可能在这方面和问题领域都非常擅长,以至于我们旁边都是假装。

认真地,使人们尊重以凉爽而有趣的方式解决他们所面临的问题。理解解决问题的能力来自不同的背景。不是他们是否掌握了每个人都应该知道的所谓的技能“清单”,这样他们才能以相同的方式思考。那就是我们想要的完全相反的东西。每个人的“清单”都是并且应该不同。越多越好。如今,编程是解决问题的方法。尊重做得好的人,并了解每个人都有不同的优势参加会议。这是我们要互相帮助才能有效地团队合作的唯一途径。仅仅因为知道“ C”或某种东西确实可以帮助这个人变得很棒,并不意味着因为您没有


3

我建议您阅读以下内容:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

如前所述,使用抽象时,较低级别的内容始终会对您的操作产生影响。这可以是性能方面的原因,失败原因,安全原因等。

因此,毫无疑问,您现在应该了解这些内容。尤其不是asm或CPU架构专家。但是,必须具备足够的知识来在需要了解更多信息时将自己记录下来。


也许我需要澄清一下,我知道TCP / IP的工作方式=),我的意思是在TPC / IP上实现诸如套接字之类的东西超出了我的知识,我可以即时学习吗?当然,我想学习吗?并非如此,主要是因为我不相信最终结果将在生产环境中得到充分证明或在给定时间内符合所有要求。我只是认为那时候我需要达到高级语言的专业水平,并且我认为给定的时间不足以了解所有的陷阱,这给我带来了冒险的感觉。
工作

重点是:您不必成为专家。但是您需要了解基本知识。因此,您将知道所使用的抽象的极限是什么-这是最低要求,并且知道在达到极限时如何记录自己。
deadalnix11年

2

他的论证是“ 没有真正的苏格兰人”逻辑谬论的一个很好的例子。

但是,低级和高级编程之间的区别不是语言,而是应用程序知识领域。将值分配为true可能意味着打开LED或启用小部件上的鼠标单击事件。语言不在乎。

例如,看一下该库,用于在arduino上使用LED矩阵。这不是火箭科学,而且如果不提出“低级哦,不!”,实际上任何程序员都可以稍加努力就能理解它。精神障碍。


1

每种编程语言都有其优点和缺点。学习一些知识,将使您对在给定项目时使用什么以及如何有效使用它有很好的认识。

作为程序员,您可以专注于特定的PL,将其用作解决任何问题的唯一工具,您还可以了解很多PL,但是不擅长于这些极端之间的任何事情。

也许告诉您“词组”感到沮丧的人,也许您不是与他交谈的唯一联系人。

知道问题并知道需要什么样的技能才能有效解决问题是程序员的一个好特征。case,您的情况是,由于您没有所需的技能,因此您也许可以将您的联系人推荐给具有所需技能的另一位程序员。

干杯,

警惕的


1

具有理论知识是很好的。必要时能够学习低级语言非常重要。

但至于“如果您自称程序员,您应该了解所有这些内容”,谁能了解所有内容呢?在他们还没有做之前?


-2

我会改写

“如果您自称程序员,那么您应该了解所有这些内容”

“如果您自称程序员,那么您应该足够了解可以快速学习所有这些知识”

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.