Language agnostic 为什么新手程序员似乎回避库?

Language agnostic 为什么新手程序员似乎回避库?,language-agnostic,Language Agnostic,我注意到这里有许多新程序员提出的问题,这些问题可以通过使用库来解决。当一个库被推荐时,他们经常会回答“我不想使用X库”,这是学习曲线吗?或只是好奇 这是学习曲线。几乎总是因为他们的教授告诉他们不能 有时只是因为他们想自己学习,但我认为这很少见。我总是有这种冲动想自己去做,但有时我可以看到自己的局限性。 最近刚下载了一个创建PDF文档的库,但这几乎是我唯一记得的一次 至少对我来说,自己做事情是我学习的方式 我的印象是,许多新手程序员在使用别人的图书馆时不会认为是他们自己的工作。 < P>我不认为这

我注意到这里有许多新程序员提出的问题,这些问题可以通过使用库来解决。当一个库被推荐时,他们经常会回答“我不想使用X库”,这是学习曲线吗?或只是好奇

这是学习曲线。

几乎总是因为他们的教授告诉他们不能


有时只是因为他们想自己学习,但我认为这很少见。

我总是有这种冲动想自己去做,但有时我可以看到自己的局限性。 最近刚下载了一个创建PDF文档的库,但这几乎是我唯一记得的一次

至少对我来说,自己做事情是我学习的方式


我的印象是,许多新手程序员在使用别人的图书馆时不会认为是他们自己的工作。

< P>我不认为这是一件坏事。使用图书馆是伟大的;它可以节省时间、精力、bug等。但是,在这个过程中,您学到的东西很少,对于新程序员来说,学习是目标。为了回答这个问题,我认为他们倾向于避开图书馆,因为他们不习惯使用图书馆,也许他们不知道图书馆的存在。

我认为教授们希望他们坚持基本原则。当我从研究生院毕业时,我知道C++、java和其他一些语言,但对公司中使用的库和框架一无所知。这就像你知道java吗..是的..你能写一个servlet吗..不

当你仍在学习一门新语言的细节时,还要学习如何使用第三方库可能看起来工作量太大了。此外,库的文档往往很糟糕——或者至少对于新(er)程序员来说,文档是完全不透明的

因此,面对试图解决问题X,说“使用图书馆”听起来很像“先解决问题Y,然后解决问题X”


<>(他们的教授告诉他们不要这样做。我设法在我的研究生中完全掌握了C++而没有学习STL的存在。孩子,那是我做的面条吗?)

因为作为一名开发人员,成熟的一部分是学习快速识别问题,这些问题可以通过库或现有解决方案解决,并且需要个人关注。

对于许多文档不完整的库,这些库的实现松散,或者使用的语言不允许您很好地控制包含和可见性,很难猜测图书馆应该如何使用

在你使用它一段时间后,你已经习惯了这些怪癖,或者阅读了其他教你正确方法的源代码;但在此之前,使用一个糟糕的组合/设计库可能会让人非常恼火。(甚至是一个设计良好、没有很好的文档记录的文档)


如果您没有库的源代码,那是另一个问题——您无法控制保持程序工作的能力。现在这种情况更为罕见,但在购买图书馆的情况下仍然会发生。

我认为需要投入大量时间来理解图书馆的用途——是的,学习曲线,但更重要的是,新手程序员可能不知道他们需要什么,直到他们有更多的经验。

对于速度恶魔,他们很少使用第三方库,新程序员通常希望压缩他们代码的每一次速度。我认为如果他们不能控制他们的代码,他们就无法获得他们想要的性能。至少这就是我第一次开始编程时避免使用库的原因


我记得我编写了我的第一个DAL,并避开了网络上的所有其他免费库,因为我希望我的代码能够以最高速度运行。后来,我发现通常不是代码,而是数据库。

我是程序员,不是心理学家!:)


对我来说那是很久很久以前的事了,但那是因为我想学习和体验。我不想使用我不懂的东西,所以如果我认为我不懂这个库,也不能自己编程,我就尽量不使用它。可能也有一点恐惧;编程给你一种控制的感觉,使用库就像是放弃这个控制。

当你试图学习如何做事情时,只要调用AwesomeClass.doAwesomeStuff()“神奇地”完成了某件事情,你就会放弃一部分控制。当你是“新”的,不知道你要送出什么或者为什么会让人不安。这是我第一次学习它时的主要挑战。这么多的东西都“起作用”,我不知道为什么不去挖掘大量的Rails源代码(我通常没有时间去做)


至少,这是我的看法。

一些开放源码库有缺陷,或者不如其他库那么有效。

许多新程序员仍然在非常低的抽象级别上工作,学习这个行业。这是每个人都必须经历的事情。可以说,“向上移动堆栈”需要一段时间

一旦程序员意识到他们大部分时间都在解决其他人已经解决的问题,并且目标是实现“业务价值”,那么他们就能真正体会到一个好的库所带来的价值

有些人在面对 问题,想想“我知道,我会用 现在他们有两个 问题

说真的-对于一个已经被新语言、编程环境、范例、击键等淹没的新手来说,这是一种合理的方式来回应使用库的建议。如果你有一个解决方案,但它不起作用,那么有很多潜在的错误源;对它们进行分类是一项挑战。再加上它们似乎是不理性的

“使用库”意味着找到库,下载它,在项目中安装它,并调用必要的函数。不难,如果你愿意的话